python编程学习进度十一

今天学习的还是关于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)))。

原文地址:https://www.cnblogs.com/lover995/p/12296593.html