类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法.
对象:是类的实例化
方法:类中定义的函数
特殊的方法:__init__()
当创建一个新实例时,都会自动运行它,加下划线是必要的,是为了区分默认方法和普通方法,如果不加那么在调用新实例时将不会自动调用这个方法。
方法定义的形参self必不可少,而且必须定义在最前面,作用是指向实例本身的一个引用,让实例能够访问类中的属性和方法
以self为前缀的变量可供类中的所有方法使用,可以通过类的任何实例来访问
可以根据需求创建任意多的实例,条件是每个实例都储存在不同的变量中
如果要编写的类是另一个现成的类的特殊版本,可以使用继承,一个类继承另一个类时,将自动获得另一个类的所有属性和方法,原有的类叫父类,继承父类所有的属性和方法,也可以自己定义新的方法
特殊函数super能让子类顺利的调用父类的方法
父类的重写:
在子类中定义一个和父类中名字完全一样的方法,然后进行重写即可,在调用子类时使用了这个方法,那么将会显示出修改后的方法,但是在调用父类的这个方法时,仍然显示的是原来的方法内容,既这个修改内容仅仅在调用子类时是生效的:
class Car:
def __init__(self, make, model, year):
self.ma = make
self.mod = model
self.ye = year
self.gas = 100
def get_descriptive_name(self):
long_name = f"{self.ye} {self.ma} {self.mod}"
return long_name.title()
def fill_gas_tank(self):
print(f"The tank is only {self.gas} gas")
class ElectricCar(Car):
def __init__(self, make, model, year):
super().__init__(make, model, year)
def fill_gas_tank(self):
print("This car doesn't need a gas tank!")
my_car = ElectricCar('teals', 'model s', 2020)
my_car.fill_gas_tank()
car = Car('audi', 'A8L', 2021)
car.fill_gas_tank()
cout :
将实例用作属性:
当类越来越长时,为了增加代码的可读性,尝试将一部分代码单独提取出来,单独作为一个类。可以将一个大类拆分成多个协调用工作的小类。
提取出来后,要创建一个小类当做实例作为主类的属性