以下python程序中的所有id()
都打印相同的值。我原以为不同的成员函数是不同的对象,因此id()
应该返回不同的值。为什么id()
会返回相同的值?
class A():
def x(self):
print 'x'
def __y(self):
print 'y'
def y(self):
self.__y()
class B(A):
def x(self):
self.jj = 20
print 'bx'
def __y(self):
self.sj = 20
print 'by'
print 'by'
ta = A()
tb = B()
ta.x()
ta.y()
ta._A__y()
tb.x()
tb._A__y()
tb._B__y()
tb.y()
print id(ta.x)
print id(ta.y)
print id(ta._A__y)
print id(tb.x)
print id(tb._A__y)
print id(tb._B__y)
print id(tb.y)
下一个问题(实际上那是我原来的问题)是,如何检查tb._A__y和tb.y是否真的调用相同的函数。我曾经使用id()告诉我如果id()返回一个函数的地址的答案。但现在我认为它在Python中不起作用。