一只鸟,长得像鸭子就是鸭子,叫声像鸭子就是鸭子,走起来像鸭子就是鸭子
归一化,统一接口
2.类的约束:控制子类定义一些方法
-
方法一:推荐使用
raise:主动抛出异常
-
方法二:
from abc iport ABCMeta,abstractmethod
抽象类,接口类:指定一些规则
3.super
super(类名,self)从当前mro中查找类名的下一个类
super时按照mro的顺序进行继承
4.类的私有成员
以__开头的变量就是私有的
_desires = "有欲望" (程序员之间预定俗称)类私有的属性
私有属性和方法在当前类中可以查看及使用
子类不能继承父类的私有方法和属性
私有的目的就是保护数据的安全性
强制查看私有方法或属性:(但是非常不推荐使用)
_类名私有变量名
_类名私有方法名
class Human: live = '有理想' # 类共有的属性 __desires = '有欲望' # (程序级别)类私有的属性 _desires = '有欲望' # (程序员之间约定俗称)类私有的属性 def __init__(self,name,age,sex,hobby): self.name = name self.age = age self.sex = sex # 对象的共有的属性 self.__hobby = hobby # 对象的私有属性 def func(self): # 类内部可以查看对象的私有属性 print(self.__hobby) def foo(self): # 类内部可以查看类的私有属性 print(self.__desires) def __abc(self): # 私有方法 只有内部可以使用 print('is abc')obj = Human('beauty',28,'man','woman')print(obj.name)print(Human.live)Huamn.live = '无脑'print(Human.live)obj.__abc() # 会报错 因为外部不可以调用类的私有方法print(Human.__desires)
来源:https://www.cnblogs.com/womenzt/p/12419736.html