用于类的函数
issubclass(cls, class_or_tuple) 判断一个类是否继承自其它类,如果此cls 是class 或tuple中的一个派生子类,则返回True, 否则返回False
示例:
class A: pass class B(A): pass class C(B): pass issubclass(C, B) # True issubclass(B, C) # False issubclass(C, (int, str)) # False issubclass(C, (int, B, str)) # True
封装 enclosure
封装是指隐藏类的实现细节,让使用者不关心这些细节
封装的目的是让使用者通过尽可能少的方法(或属性)操作对象
私有属性和方法
python类中以双下划线('_ _') 开头,不以双下划线结尾的标识符为私有成员,私有成员或只能用类内的方法进行访问和修改
以__开头的实例变量有私有属性
以__开头的方法为私有方法
多态 polymorphic
什么是多态:
字面意思: 多种状态
多态是指在有继承/派生关系的类中,调用基类对象的方法,实际能调用子类的覆盖方法的现象叫多态
状态:
静态(编译时状态)
动态(运行时状态)
说明:
多态调用方法与对象相关,不与类相关
Python的全部对象都只有"运行时状态(动态)", 没有"C++语言"里的"编译时状态(静态)"
多继承的 MRO (Method Resolution Order) 问题
类的 __mro__ 属性 此属性用来记录类的方法查找顺序
重写
在自定义类内添加相应的方法,让自定义类创建的实例能像内建对象一样进行内建函数操作
对象转字符串函数:
repr(obj) 返回一个能代表此对象的表达式字符串,通常
eval(repr(obj)) == obj (这个字符串通常是给python解释执行器运行用的)
str(obj) 通过给定的对象返回一个字符串(这个字符串通常是给人阅读的)
对象转字符串函数的重写方法
repr(obj) 函数的重写方法:
def __repr__(self):
str(obj) 函数的重写方法:
def __str__(self):
说明:
1. str(obj) 函数先查找, obj.__str__()方法,调用此方法并返回结果
2. 如果没有obj.__str__()方法时,则返回obj.__repr__()方法的结果并返回
3. 如果obj.__repr__方法不存在,则调用object类的__repr__实例方法显示<__main__.XXXX object at 0xAABBCCDD>格式的字符串
原文链接: https://www.cnblogs.com/hongliangzhao/p/12546596.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/375228
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!