在此示例中,为什么子类不继承python中父类的方法?

头脑风暴

我有以下代码。

class Foo(object):
     def __init__(self):
         self.__baz = 40
     def foo(self):
         print self.__baz

class Bar(Foo):
     def __init__(self):
         #super(Bar, self).__init__()
         self.__baz = 21
     def bar(self):
         print self.__baz

x = Bar()
x.foo()
x.bar()

我收到此错误:

Traceback (most recent call last):
  File "classes.py", line 15, in <module>
    x.foo()
  File "classes.py", line 5, in foo
    print self.__baz
AttributeError: 'Bar' object has no attribute '_Foo__baz'

为什么foo方法不继承Bar

编辑:如果您调用已注释掉的super,它会很好地工作。

米尔森

双下划线属性的名称根据当前/包含的命名空间进行修饰。在函数中foo,当前名称空间是Foo这样,当python查找时self.__bazself._Foo__baz由于名称修改方案,它实际上将在查找由于Foo您实际上没有设置__baz属性,因此该类没有_Foo__baz属性(_Bar__baz因为您self.__baz在中的方法中进行了设置所以它具有属性Bar)。

当然,你可能已经注意到,如果你调用Foo.__init__(self)Baz.__init__(直接或通过super),你会看到问题消失,因为Foo.__init____baz(即_Foo__baz)。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么子类不覆盖python中基类的字段以及如何处理

来自分类Dev

为什么子类不覆盖python中基类的字段以及如何处理

来自分类Dev

为什么子类看不到父类的方法?

来自分类Dev

Ruby子类不继承父方法或无法在类主体中调用父方法

来自分类Dev

Ruby子类不继承父方法或无法在类主体中调用父方法

来自分类Dev

子类中的Python类继承自父类中的类

来自分类Dev

为什么子类已经覆盖了父类的静态方法呢?

来自分类Dev

在C#中,为什么子类字段的默认值不覆盖超类字段的默认值?

来自分类Dev

在C#中,为什么子类字段的默认值不覆盖超类字段的默认值?

来自分类Dev

为什么在Java继承期间在父类中声明的数组在子类中不可见?

来自分类Dev

为什么在此示例中尝试不触发回溯

来自分类Dev

我在子类中覆盖了一个属性的setter,但是当我在超类的init方法中调用它时,为什么子类的方法响应?

来自分类Dev

子类可以从 Python 中的父类继承实例变量吗?

来自分类Dev

为什么python中的继承要求父类显式继承对象?

来自分类Dev

C ++中的继承(父类和子类)

来自分类Dev

在 Rspec 中测试子类继承的父类。

来自分类Dev

具有新对象的父类,以及子类中的新对象,对象/方法继承Python

来自分类Dev

为什么子元素<img />不包含在父div的宽度和高度中?

来自分类Dev

在C ++中,继承父类的正确方法是什么,以便其子类在父类和子类中没有重复的属性?

来自分类Dev

为什么子类中的接口未发布

来自分类Dev

为什么子外壳中的$$等于父外壳中的$$?

来自分类Dev

调用方法的顺序-在此示例中为什么如此重要?

来自分类Dev

为什么子类重写虚拟函数不能更改父类的默认函数参数?

来自分类Dev

为什么协议中定义的重写方法在父类而不是其子类中被调用?

来自分类Dev

为什么子类不覆盖其超类变量的值?

来自分类Dev

Python类继承:如何使用不在父类中的值初始化子类

来自分类Dev

在Python 2中从子类调用父类方法

来自分类Dev

为什么在此示例中,notifyAll()不唤醒所有线程?

来自分类Dev

为什么在此示例中Shiro的AnonymousFilter不创建新的Web会话?

Related 相关文章

  1. 1

    为什么子类不覆盖python中基类的字段以及如何处理

  2. 2

    为什么子类不覆盖python中基类的字段以及如何处理

  3. 3

    为什么子类看不到父类的方法?

  4. 4

    Ruby子类不继承父方法或无法在类主体中调用父方法

  5. 5

    Ruby子类不继承父方法或无法在类主体中调用父方法

  6. 6

    子类中的Python类继承自父类中的类

  7. 7

    为什么子类已经覆盖了父类的静态方法呢?

  8. 8

    在C#中,为什么子类字段的默认值不覆盖超类字段的默认值?

  9. 9

    在C#中,为什么子类字段的默认值不覆盖超类字段的默认值?

  10. 10

    为什么在Java继承期间在父类中声明的数组在子类中不可见?

  11. 11

    为什么在此示例中尝试不触发回溯

  12. 12

    我在子类中覆盖了一个属性的setter,但是当我在超类的init方法中调用它时,为什么子类的方法响应?

  13. 13

    子类可以从 Python 中的父类继承实例变量吗?

  14. 14

    为什么python中的继承要求父类显式继承对象?

  15. 15

    C ++中的继承(父类和子类)

  16. 16

    在 Rspec 中测试子类继承的父类。

  17. 17

    具有新对象的父类,以及子类中的新对象,对象/方法继承Python

  18. 18

    为什么子元素<img />不包含在父div的宽度和高度中?

  19. 19

    在C ++中,继承父类的正确方法是什么,以便其子类在父类和子类中没有重复的属性?

  20. 20

    为什么子类中的接口未发布

  21. 21

    为什么子外壳中的$$等于父外壳中的$$?

  22. 22

    调用方法的顺序-在此示例中为什么如此重要?

  23. 23

    为什么子类重写虚拟函数不能更改父类的默认函数参数?

  24. 24

    为什么协议中定义的重写方法在父类而不是其子类中被调用?

  25. 25

    为什么子类不覆盖其超类变量的值?

  26. 26

    Python类继承:如何使用不在父类中的值初始化子类

  27. 27

    在Python 2中从子类调用父类方法

  28. 28

    为什么在此示例中,notifyAll()不唤醒所有线程?

  29. 29

    为什么在此示例中Shiro的AnonymousFilter不创建新的Web会话?

热门标签

归档