创建类
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()
类中的函数称为方法。__init__()
是一个特殊的方法,每当根据Dog类创建新实例时都会自动运行它。这个方法中自动传递实参self,它是指向本身的引用,让实例能够访问类中的属性和方法。
根据类创建实例
class Dog():
--snip--
my_dog = Dog('willie', 6)
访问属性
要访问实例属性,使用句点表示法。
my_dog.name
调用方法
使用句点调用类中的方法。
class Dog():
--snip--
my_dog = Dog('willie', 6)
my_dog.sit()
创建多个实例
class Dog():
--snip--
my_dog = Dog('willie', 6)
my_dog = Dog('lucy', 3)
继承
编写类时,并非总是要从空白开始。如果要编写的类是另一个现成类的特殊版本,可使用继承。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。
子类的方法init()
创建子类的实例时,Python首先需要完成的任务是给父类的所有属性赋值。为此,子类的方法__init__()
需要父类施以援手。
class Car():
"""模拟汽车"""
def __init__(self, make, model, year):
self.make = make
self.model = model
self.year = year
self.odmeter_reading = 0
def get_descriptive_name(self):
long_name = str(self.year) + ' ' + self.make + ' ' + self.model
return long_name.title()
def read_odometer(self):
print("This car has " + str(self.odmeter_reading) + " miles on it.")
def update_odmeter(self, mileage):
if mileage >= self.odmeter_reading:
self.odmeter_reading = mileage
else:
print("You can't roll back an odometer!")
def increment_odometer(self, miles):
self.odometer_reading += miles
class EletricCar(Car):
"""电动汽车的独特"""
def __init__(self, make, model, year):
"""初始化父类的属性"""
super.__init__(make, model, year)
重写父类的方法
对于父类的方法,只要它不符合子类模拟的实物的行为,都可对其重写。为此,可在子类中定义一个这样的方法,即它与要重写的父类方法同名。这样,Python将不会考虑这个父类方法,而只关注你在子类中定义的相应方法。
网友评论