0 ⽬标
⼀. ⾯向对象三⼤特性
⼆. 多态
# 需求:警务人员和警犬一起工作,警犬分2种:追击敌人和追查毒品,携带不同的警犬,执行不同的工作 # 1. 定义父类,提供公共方法: 警犬 和 人 class Dog(object): def work(self): pass # 2. 定义子类,子类重写父类方法:定义2个类表示不同的警犬 class ArmyDog(Dog): def work(self): print('追击敌人...') class DrugDog(Dog): def work(self): print('追查毒品...') # 定义人类 class Person(object): def work_with_dog(self, dog): dog.work() # 3. 创建对象,调用不同的功能,传入不同的对象,观察执行的结果 ad = ArmyDog() dd = DrugDog() daqiu = Person() daqiu.work_with_dog(ad) daqiu.work_with_dog(dd)
三. 类属性和实例属性
# 1. 定义类,定义类属性 class Dog(object): tooth = 10 # 2. 创建对象 wangcai = Dog() xiaohei = Dog() # 3. 访问类属性: 类和对象 print(Dog.tooth) print(wangcai.tooth) print(xiaohei.tooth)
class Dog(object): tooth = 10 wangcai = Dog() xiaohei = Dog() # 1. 类 类.类属性 = 值 # Dog.tooth = 20 # print(Dog.tooth) # print(wangcai.tooth) # print(xiaohei.tooth) # 2. 测试通过对象修改类属性 wangcai.tooth = 200 print(Dog.tooth) # 10 print(wangcai.tooth) # 200 print(xiaohei.tooth) # 10
class Dog(object): def __init__(self): self.age = 5 def info_print(self): print(self.age) wangcai = Dog() print(wangcai.age) # 5 # print(Dog.age) # 报错:实例属性不能通过类访问 wangcai.info_print() # 5
四. 类⽅法和静态⽅法
# 1. 定义类:私有类属性,类方法获取这个私有类属性 class Dog(object): __tooth = 10 # 定义类方法 @classmethod def get_tooth(cls): return cls.__tooth # 2. 创建对象,调用类方法 wangcai = Dog() result = wangcai.get_tooth() print(result)
# 1. 定义类,定义静态方法 class Dog(object): @staticmethod def info_print(): print('这是一个静态方法') # 2. 创建对象 wangcai = Dog() # 3. 调用静态方法:类 和 对象 wangcai.info_print() Dog.info_print()