类之进阶

用于类的函数

  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

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年3月3日 下午12:33
下一篇 2023年3月3日 下午12:36

相关推荐