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 我这模型写的不对吗?为什么lingo解出来的下面影子价格这一溜少一个变量
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果
  • ¥15 matlab图像高斯低通滤波