小编Jas*_*n A的帖子

是否重写了带有双下划线的Python方法名称?

看看这个.需要注意的是类B重写Aa()方法.

In [1]: class A(object):
   ...:     def __init__(self):
   ...:         self.a()
   ...:     def a(self):
   ...:         print "A.a()"
   ...:         
   ...:         

In [2]: class B(A):
   ...:     def __init__(self):
   ...:         super(B, self).__init__()
   ...:     def a(self):
   ...:         print "B.a()"
   ...:         
   ...:         

In [3]: b = B()
B.a()
Run Code Online (Sandbox Code Playgroud)

没有惊喜.

现在,看看这个.请注意,现在被覆盖的方法是__a().

In [7]: class A(object):
   ...:     def __init__(self):
   ...:         self.__a()
   ...:     def __a(self):
   ...:         print "A.__a()"
   ...:         
   ...:         

In [8]: class B(A):
   ...:     def __init__(self):
   ...:         super(B, self).__init__()
   ...: …
Run Code Online (Sandbox Code Playgroud)

python

29
推荐指数
1
解决办法
2万
查看次数

标签 统计

python ×1