![]() |
1
30
在Python中,类的主体在创建类之前在其自己的命名空间中执行(之后,该命名空间的成员成为类的成员)。因此,当解释器到达y=x+1时,类B此时还不存在,因此没有父类。 http://docs.python.org/reference/compound_stmts.html#class-definitions |
![]() |
2
51
Python对barenames的作用域规则非常简单明了:首先是本地名称空间,然后是嵌套当前名称的外部函数(如果有的话),然后是全局函数,最后是内置函数。这就是查找一个裸名时所发生的一切,不需要记忆或应用任何复杂的规则(也不需要Python编译器强制执行更复杂的规则)。
任何时候你想要一个不同的查找,你将使用
光秃秃的
姓名。限定名的功能要强大得多,因为查找总是可以委托给可以请求其属性的对象,而这些对象可以实现它们所需要的任何查找规则。特别是在类中的实例方法中,
身体
在你的例子里,在课堂上
有些人非常热衷于其他“神奇的”裸名查找规则,以至于他们无法忍受Python的这一方面(我相信,最初是受到Modula-3的启发,Modula-3是一种鲜为人知的语言,在理论家的圈子里得到了很好的考虑;-)——不得不写作
任何
其他形式的查找。。。但是,我疯狂地爱上Python并不是什么秘密(我也有自己的抱怨——例如。,
|