今天学习的还是关于python编程中类相关的知识,主要是类的设计以及类的主题。下面是总结:
1、无绑定类方法对象无self必须明确提供实例对象做第一个参数,绑定实例方法对象用self+函数对,不用传递实例。
委托是指把对象包装在代理类中。
#trace.py class wrapper: def __init__(self,object): self.wrapped = object def __getattr__(self,attrname): print 'Trace:',attrname return getattr(self.wrapped,attrname) >>>from trace import wrapper >>>x = wrapper([1,2,3]) >>>x.append(4) Trace:append >>>x.wrapped [1,2,3,4]
组合是一种技术,让控制器类嵌入和引导一群对象,并自行提供接口。
2、类的主题
伪私有属性:将开头两个下划线的变量名前再加上_类名。仍然不是真正的私有。
新式类从内置类型创建子类,或者直接用object作为超类。3.0以后所有类自动成为新式类。钻石继承在新式类里从括号最右开始搜索,这与经典类正相反。为了解决继承不同类同名变量冲突,可以进行强制规定,如attr = B.attr。
__slots__用来限制类的实例能有的合法属性集。
内容属性使用拦截的方式来提供属性,但是它本身不是成员变量。类似于改写__getattr__,使用property()进行。
静态方法和类方法分别需要调用staticmethod和classmethod两个函数,前者调用不需要实例(实例调用时),后者把类传入类方法第一个参数。
函数装饰器在def上一行用@标明,有点像包裹函数,@A @B @C后def f()相当于f=A(B(C(f)))。