文章目录
面向对象核心知识
一、面向对象三大特性
1、封装
2、继承
3、多态
二、多态
1、了解多态
2、体验多态
三、类属性和实例属性
1、类属性
2、实例属性
四、类方法和静态方法
1、类方法
2、静态方法
class Dog(object):def work(self): # ⽗类提供统⼀的⽅法,哪怕是空⽅法print('指哪打哪...')class ArmyDog(Dog): # 继承Dog类def work(self): # ⼦类重写⽗类同名⽅法print('追击敌⼈...')class DrugDog(Dog):def work(self):print('追查毒品...')class Person(object):def work_with_dog(self, dog): # 传⼊不同的对象,执⾏不同的代码,即不同的work函数dog.work()ad = ArmyDog()
dd = DrugDog()
daqiu = Person()
daqiu.work_with_dog(ad)
daqiu.work_with_dog(dd)
class Dog(object):tooth = 10wangcai = Dog()
xiaohei = Dog()
print(Dog.tooth) # 10
print(wangcai.tooth) # 10
print(xiaohei.tooth) # 10
修改类属性
类属性只能通过类对象修改,不能通过实例对象修改,如果通过实例对象修改类属性,表示的是创建了⼀个实例属性。class Dog(object):tooth = 10
wangcai = Dog()
xiaohei = Dog()
# 修改类属性
Dog.tooth = 12
print(Dog.tooth) # 12
print(wangcai.tooth) # 12
print(xiaohei.tooth) # 12
# 不能通过对象修改属性,如果这样操作,实则是创建了⼀个实例属性
wangcai.tooth = 20
print(Dog.tooth) # 12
print(wangcai.tooth) # 20
print(xiaohei.tooth) # 12
class Dog(object):def __init__(self):self.age = 5def info_print(self):print(self.age)
wangcai = Dog()
print(wangcai.age) # 5
# print(Dog.age) # 报错:实例属性不能通过类访问
wangcai.info_print() # 5
类方法使用场景
class Dog(object):__tooth = 10@classmethoddef get_tooth(cls):return cls.__toothwangcai = Dog()
result = wangcai.get_tooth()
print(result) # 10
class Dog(object):@staticmethoddef info_print():print('这是⼀个狗类,⽤于创建狗实例....')
wangcai = Dog()
# 静态⽅法既可以使⽤对象访问⼜可以使⽤类访问
wangcai.info_print()
Dog.info_print()
下一篇:14正交向量与子空间