同其他面向对象编程的语言一样, 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() 是一个特殊函数,将父类和子类关联起来。
子类也可以添加自定义的属性和方法。
重写父类的方法
直接重新定义与父类同名的方法,就可以对其重写。当子类调用这个方法时, 会忽略父类的方法。