一只鸟,长得像鸭子就是鸭子,叫声像鸭子就是鸭子,走起来像鸭子就是鸭子
归一化,统一接口
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