python

时间:2018-02-02 16:17:33

标签: python class

我刚刚意识到以下工作。怎么运作?有什么细节?如果类定义不同会发生什么?

class A(object):
    pass

class A(object):
    pass

2 个答案:

答案 0 :(得分:3)

第二个定义会覆盖第一个定义。它与简单变量没有区别:

>>> i = 2
>>> i = 3
>>> print(i)
3

同样适用于函数:您只需重新定义它。

>>> def f(): return 1
... 
>>> def f(): return 2
... 
>>> f()
2

Python不强制对象名称的唯一性(即不会因“......已定义”而崩溃)。它也不关心内部:第一类定义可能与第二类定义有不同的方法。订单是唯一重要的事情。

答案 1 :(得分:1)

第二个定义被覆盖。

 $  cat test.py 
class A(object):
    def __str__(self):
        return 'first A'

class A(object):
    def __str__(self):
        return 'second A'

a1 = A()
print(a1)

 $  python test.py 
second A