第1个回答 2017-02-15
可能你有C++的基础吧,C++确实可以不用带上this。
我把你的代码稍微改了一下,你可以分别看看cls1.n、cls2.n、self.n的输出。
class cls1:
n=3
class cls2(cls1):
def __init__(self,cls1=cls1):
cls2.n += 1
self.n += 2
print 'cls1.n:%s'%cls1.n
print 'cls2.n:%s'%cls2.n
print 'self.n:%s'%self.n
cls2()
print 'cls1.n:%s'%cls1.n
可以看出两个类和一个对象都可以在这里调用它们的n属性,如果只敲一个n别人读你的代码时就比较容易产生岐义,虽然少打了5个字符,但是不符合简单明确的pythonic哲学。
当然你也可以就认为python语法规则就是这么规定的。本回答被网友采纳