Python学习笔记(二十)面向对象 - 其他
一、面向对象三大特性
注意 :以上三个特性会出现在面试,需要熟记。
二、多态
2.1 了解多态
2.2 体验多态
class Dog(object):
def work(self):
print('指哪打哪')
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()
ad = ArmyDog()
dd = DrugDog()
daqiu = Person()
daqiu.work_with_dog(ad) # 追击敌人
daqiu.work_with_dog(dd) # 追查毒品
三、类属性和实例属性
3.1 类属性
3.1.1 设置和访问属性
- 类属性就是 类对象 所拥有的属性, 它被 该类的所有实例对象 所共有。
- 类属性 可以使用 类对象 或者 实例对象 访问。
# 定义类
class Dog(object):
teeth = 10
# 创建对象
wangcai = Dog()
xiaohei = Dog()
# 访问类属性:通过 类 和 对象 两种方法
print(Dog.teeth) # 10
print(wangcai.teeth) # 10
print(xiaohei.teeth) #10
3.1.2 修改类对象
类属性只能通过类对象修改,不能通过实例对象修改,如果通过实例对象修改类属性,表示的是创建了一个实例属性。
class Dog():
teeth = 10
wangcai = Dog()
xiaohei = Dog()
# 1. 通过类修改 : 类名.属性 = 值
Dog.teeth = 20
print(Dog.teeth) # 20
print(wangcai.teeth) # 20
# 2. 通过实例对象修改 : 对象名.属性 = 值
wangcai.teeth = 30
print(Dog.teeth) # 20
print(wangcai.teeth) # 30
print(xiaohei.teeth) # 20
四、类方法和静态方法
4.1 类方法
4.1.1 类方法特点
4.1.2 类方法使用场景
- 当方法中 需要使用类对象 如访问私有属性等,定义类方法。
- 类方法一般和类属性配合使用。
# 定义类:私有类属性,类方法获取这个私有类属性
class Dog(object):
# 私有类属性
__teeth = 10
# 类方法
@classmethod
def get_teeth(cls):
return cls.__teeth
# 创建对象
wangcai = Dog()
# 调用类方法
result = wangcai.get_teeth()
print(result) # 10
4.2 静态方法
4.2.1 静态方法特点
4.2.2 静态方法使用场景
# 1. 定义类,类里面定义静态方法
class Dog(object):
@staticmethod
def info_print():
print('这是一个静态方法')
# 2. 创建对象
wangcai = Dog()
# 3. 调用静态方法: 类 和 对象
Dog.info_print() # 这是一个静态方法
wangcai.info_print() # 这是一个静态方法