Python需要指定self。
结果是,即使没有可见的完整类定义,也永远不会对什么是成员和什么不是成员感到困惑。这会导致有用的属性,例如:您不能添加意外遮蔽非成员并从而破坏代码的成员。
一个极端的例子:您可以在不知道类可能具有什么基类的情况下编写类,并且始终知道您是否正在访问成员:
class A(some_function()): def f(self): self.member = 42 self.method()
这就是 完整的 代码!(some_function返回用作基础的类型。)
另一个是动态组合类的方法的:
class B(object): passprint B()# <__main__.B object at 0xb7e4082c>def B_init(self): self.answer = 42def B_str(self): return "<The answer is %s.>" % self.answer# notice these functions require no knowledge of the actual class# how hard are they to read and realize that "members" are used?B.__init__ = B_initB.__str__ = B_strprint B()# <The answer is 42.>
记住,这两个例子都是极端的,您不会每天看到它们,我也不建议您经常编写这样的代码,但它们确实显示了明确要求自我的各个方面。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)