佛山建站怎么做如何快速推广自己的品牌
1、类的继承
父类:被继承
子类:继承者 – 可以使用父类的所有属性和方法、大大简化代码。
语法:在类名字后加上(继承的类名字)
# 定义类 -- 父类
class Car:# 定义类属性wheel = "有车轮"engine = "有引擎"# 初始化函数--特殊的实例方法def __init__(self, cl="黑色", lg="奔驰"): # 定义函数的参数print("正在生成一辆车....")# 定义实例属性:self.color = clself.logo = lg# 定义实例方法def run(self, light="白炽光"):print("一辆车正在开....")# 实例方法内,可以获取实例属性,也可以类属性 前面self.print(f"正在开的这辆车颜色是:{self.color}, 车的引擎是:{self.engine}")# 类里面调用:实例方法可以相互调用,self.实例方法名# self.body = "有车身"print(f"正在开的车车灯是:{light}")self.recharge()# 定义实例方法2def recharge(self):print("一辆车正在加油...")print(f"正在加油车的颜色是:{self.color}")# 定义类方法@classmethod # 用来申明是一个类方法def get_engine(cls): # cls在类里面表示类本身print("这是一个类方法....")print(f"车的引擎是:{cls.engine}") # 类方法可以获取类属性,不可以获取实例属性# 定义类方法@classmethoddef get_wheel(cls):print("这是一个另外的类方法....")cls.get_engine() # 类方法内部可以调用类方法--相互调用# cls.recharge() # 类方法内部不可以调用实例方法的--报错# 定义新的类 -- 子类,继承父类的一切
class NewEnergyCar(Car):pass# 实例化对象
new_car = NewEnergyCar()# 继承后,子类可以使用父类的所有属性和方法
print(new_car.engine) # 类属性
print(new_car.color) # 实例属性
new_car.get_engine() # 类方法
new_car.recharge() # 实例方法
2、子类的方法和属性
子类也可以有自己的属性和方法,定义自己的实例方法
- 子类的对象可以调用子类的方法和属性
- 父类的对象不可以调用子类的方法和属性
3、问题: 子类和父类有相同的名字的方法,优先用谁的么?
- 优先使用子类自己的方法 ,就近原则。
- 如果想保留父类的同名方法的使用,可以使用超继承 super().同名方法,表示在子类调用父类的方法。
# 定义类 -- 父类
class Car:# 定义类属性wheel = "有车轮"engine = "有引擎"# 初始化函数--特殊的实例方法def __init__(self, cl="黑色", lg="奔驰"): # 定义函数的参数print("正在生成一辆车....")# 定义实例属性:self.color = clself.logo = lg# 定义实例方法def run(self, light="白炽光"):print("一辆车正在开....")# 实例方法内,可以获取实例属性,也可以类属性 前面self.print(f"正在开的这辆车颜色是:{self.color}, 车的引擎是:{self.engine}")# 类里面调用:实例方法可以相互调用,self.实例方法名# self.body = "有车身"print(f"正在开的车车灯是:{light}")self.recharge()# 定义实例方法2def recharge(self):print("一辆车正在加油...")print(f"正在加油车的颜色是:{self.color}")# 定义类方法@classmethod # 用来申明是一个类方法def get_engine(cls): # cls在类里面表示类本身print("这是一个类方法....")print(f"车的引擎是:{cls.engine}") # 类方法可以获取类属性,不可以获取实例属性# 定义类方法@classmethoddef get_wheel(cls):print("这是一个另外的类方法....")cls.get_engine() # 类方法内部可以调用类方法--相互调用# cls.recharge() # 类方法内部不可以调用实例方法的--报错# 定义新的类 -- 子类,继承父类的一切
class NewEnergyCar(Car):# 子类的实例方法def save_money(self):self.battery = "有电池" # 子类的属性print("新能源车可以省油钱...")# 跟父类同名的方法def recharge(self):print("新能源车正在充电....")super().recharge() # 表示在子类调用父类的方法。
4、
1、子类可以多层继承:爷爷-爸爸-孙子。
- 可以使用爷爷类、爸爸类的所有的属性和方法
2、子类可以多重继承:同时继承多个父类,那么拥有所有父类的方法和属性。
- 多个爸爸 Robot(NewEnergyCar,AutoCar)
- 多个爸爸类的所有的属性和方法
# 定义类 -- 爷爷类
class Car:# 定义类属性wheel = "有车轮"engine = "有引擎"# 初始化函数--特殊的实例方法def __init__(self, cl="黑色", lg="奔驰"): # 定义函数的参数print("正在生成一辆车....")# 定义实例属性:self.color = clself.logo = lg# 定义实例方法def run(self, light="白炽光"):print("一辆车正在开....")# 实例方法内,可以获取实例属性,也可以类属性 前面self.print(f"正在开的这辆车颜色是:{self.color}, 车的引擎是:{self.engine}")# 类里面调用:实例方法可以相互调用,self.实例方法名# self.body = "有车身"print(f"正在开的车车灯是:{light}")self.recharge()# 定义实例方法2def recharge(self):print("一辆车正在加油...")print(f"正在加油车的颜色是:{self.color}")# 定义类方法@classmethod # 用来申明是一个类方法def get_engine(cls): # cls在类里面表示类本身print("这是一个类方法....")print(f"车的引擎是:{cls.engine}") # 类方法可以获取类属性,不可以获取实例属性# 定义类方法@classmethoddef get_wheel(cls):print("这是一个另外的类方法....")cls.get_engine() # 类方法内部可以调用类方法--相互调用# cls.recharge() # 类方法内部不可以调用实例方法的--报错# 定义新的类 -- 爸爸类
class NewEnergyCar(Car):# 子类的实例方法def save_money(self):self.battery = "有电池" # 子类的属性print("新能源车可以省油钱...")# 跟父类同名的方法def recharge(self):print("新能源车正在充电....")super().recharge() # 表示在子类调用父类的方法。# 定义自动驾驶车类 -- 另一个爸爸类
class AutoCar:def auto(self):print("这个车可自动驾驶")# # 定义机器人类 -- 孙子类 -- 多层继承: 爷爷-爸爸-孙子
# class Robot(NewEnergyCar):
# pass
# # 实例化对象 Robot
# new_car = Robot()
#
# new_car.run()
# new_car.save_money()# 定义机器人类 -- 孙子类 -- 多重继承,继承多个爸爸
class Robot(NewEnergyCar,AutoCar):pass# 实例化对象 Robot
new_car = Robot()new_car.save_money()
new_car.auto()