Python继承输出

莱庞佐
class ParentClass(object):
    def __init__(self):
        self.__x = 1
        self.y = 10
    def PRINT(self):
        print (self.__x, self.y)

class ChildClass(ParentClass):
    def __init__(self):
        super(ChildClass, self).__init__()
        self.__x = 2
        self.y = 20


c = ChildClass()
c.PRINT()

为什么输出(1,20)?我知道我是如何得到20的,但是不是2而不是1?

2号环

只是为了扩大戳的答案...

来自官方Python教程

形式为__spam的任何标识符(至少两个前导下划线,至多一个下划线)在文本上被_classname__spam替换,其中classname是当前类名,其中前导下划线被去除。只要不存在标识符的语法位置,就可以进行这种改写,只要它出现在类的定义内即可。

因此,如果我们将此行添加到代码的末尾:

print c._ChildClass__x, c._ParentClass__x,

它将打印

(1, 20)
2 1

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章