class ListTree:
def str(self):
self.__visited = {}
return self.__listclass(self.__class__, 4)
def __listclass(self, aClass, indent):
dots = '.' * indent
if aClass in self.__visited:
return '\n{0}<Class {1}:, address {2}: (see above)>\n'.format(dots,
aClass.__name__,
id(aClass) )
else:
self.__visited[aClass] = True
genabove = (self.__listclass(c, indent + 4) for c in aClass.__bases__)
return '\n{0}<Class {1}, address {2}:\n{3}{4}\n'.format(dots,
aClass.__name__,
id(aClass),
''.join(genabove),
dots)
class Super (ListTree):
def init(self):
self.data1 = 1024
self.name = "I'm Super Klass"
class Sub(Super, ListTree):
def init(self):
self.data2 = 2048
self.names = "I'm Sub Class, a subclass from Super"
a = Sub()
print(a)
它的显示结果是
....<Class Sub, address 47420856:
........<Class Super, address 47420384:
............<Class ListTree, address 47419912:
................<Class object, address 1387117264:
................
............
........
........
....
但是若果我把Super继承的ListTree去掉即
class ListTree:
def str(self):
self.__visited = {}
return self.__listclass(self.__class__, 4)
def __listclass(self, aClass, indent):
dots = '.' * indent
if aClass in self.__visited:
return '\n{0}<Class {1}:, address {2}: (see above)>\n'.format(dots,
aClass.__name__,
id(aClass) )
else:
self.__visited[aClass] = True
genabove = (self.__listclass(c, indent + 4) for c in aClass.__bases__)
return '\n{0}<Class {1}, address {2}:\n{3}{4}\n'.format(dots,
aClass.__name__,
id(aClass),
''.join(genabove),
dots)
class Super :
def init(self):
self.data1 = 1024
self.name = "I'm Super Klass"
class Sub(Super, ListTree):
def init(self):
self.data2 = 2048
self.names = "I'm Sub Class, a subclass from Super"
a = Sub()
print(a)
它的输出结果是
....<Class Sub, address 43881912:
........<Class Super, address 43881440:
............<Class object, address 1387117264:
............
........
........<Class ListTree, address 43880968:
............
........
....
所以前一次较后一次少的那个object类去哪了?
新人第一次问问题,好紧张