Kardel_Chen 2017-04-14 10:12 采纳率: 0%
浏览 819

关于python的一些小问题

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类去哪了?

新人第一次问问题,好紧张

  • 写回答

1条回答 默认 最新

  • llcczsdfd58 2017-04-14 13:19
    关注

    不用紧张,这个期末不考。

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置