Python-Tutorial《Class》

122 阅读1分钟

同其他面向对象编程的语言一样, python也是面向对象设计的一门语言。 如何创建和使用类呢?

创建一个类

class Dog():

 """一次模拟小狗的简单尝试"""

def __init__(self, name, age):

    """初始化属性name和age"""

    self.name = name

    self.age = age

def sit(self):

    """模拟小狗被命令时蹲下"""

    print(self.name.title() + " is now sitting.")

def roll_over(self):

    """模拟小狗被命令时打滚"""

    print(self.name.title() + " rolled over!")

_ _ init _ _ 方法 是类创建实例化是,python自动运行的方法。使用下划线命名是为了避免名称冲突。 init方法有3个形参:self,name,age,在实例化时,self自动传入,name与age给对应属性提供值。

sit,roll_over是类中定义的方法。

使用:

my_dog = Dog('willie', 6)

my_dog.sit()

my_dog.roll_over()

继承

通过继承,可以获取父类的属性和方法。

class Car():

"""一次模拟汽车的简单尝试"""

def __init__(self, make, model, year):

    self.make = make

    self.model = model

    self.year = year

    self.odometer_reading = 0

def get_descriptive_name(self):

    long_name = str(self.year) + ' ' + self.make + ' ' + self.modelreturn long_name.title()

def read_odometer(self):

    print("This car has " + str(self.odometer_reading) + " miles on it.")

def update_odometer(self, mileage):

    if mileage >= self.odometer_reading:

        self.odometer_reading = mileage

    else:

        print("You can't roll back an odometer!")

def increment_odometer(self, miles):

    self.odometer_reading += miles

class ElectricCar(Car):

"""电动汽车的独特之处"""

def __init__(self, make, model, year):

    """初始化父类的属性"""

    super().__init__(make, model, year)

my_tesla = ElectricCar('tesla', 'model s', 2016)

print(my_tesla.get_descriptive_name())

通过 class(baseClass) 形式,进行继承关系。

super() 是一个特殊函数,将父类和子类关联起来。

子类也可以添加自定义的属性和方法。

重写父类的方法

直接重新定义与父类同名的方法,就可以对其重写。当子类调用这个方法时, 会忽略父类的方法。