python类笔记
私有属性和方法
命名前加两个下划线
1 | from module import * |
这样做无法直接调用module
中的__func()
方法,但直接import
却是可以的
1 | from module import __func |
抽象方法
用@abstractmethod
。
__new__和__init__
__init__()
方法用于给属性赋值,不可以有返回值,__new__()
多用于构造不可变对象,必须有返回值,返回实例对象。构建新实例的时候,先调用__new__()
初始化一个实例,然后调用__init__()
进行属性赋值。
super
当子类重写父类构造方法时,为了避免父类属性没有初始化,有两种方式,第一种直接调用父类方法
1 | class A(object): |
也可以直接用super()
方法
1 | class A(object): |
self和cls
实例方法参数需要带self
,而类方法需要带cls
。
继承内置对象
继承dict
类型,重写__getitem__()
方法
1 | class SeqDict(dict): |
继承不可变长对象(实现了__immutable__()
方法),重写tuple
类
1 | class Seq(tuple): |
静态方法
用@staticmethod
。