如何在python中同时使用封装和继承

MJA

如何同时使用封装和继承?

我有以下代码:

class Character:
    def __init__(self):
        self.__name = "test"


class Warrior(Character):
    def __init__(self):
        super().__init__()

    def getName(self):
        print(self.__name)


a = Warrior()
a.getName()

当我运行代码时,出现以下错误:

Traceback (most recent call last):
  File "d:/Coding Files/lear-tsc/app.py", line 15, in <module>    
    a.getName()
  File "d:/Coding Files/lear-tsc/app.py", line 11, in getName     
    print(self.__name)
AttributeError: 'Warrior' object has no attribute '_Warrior__name'

如何摆脱这个错误?

野贺

通常,当查看其他编程语言(C ++)时,派生类无法访问私有成员。我想您正在寻找受保护的成员。

无论哪种方式,Python都没有真正的私有变量。如果您明确要求成员,则始终可以访问它。例如,在您的代码上-

class Character:
    def __init__(self):
        self.__name = "test"


class Warrior(Character):
    def __init__(self):
        super().__init__()

    def getName(self):
        print(self._Character__name)


a = Warrior()
a.getName()

结果将是:

test

并且可以在子类外部执行相同的操作。当然,这种行为应该避免。由于您仍然依赖于用户的良好行为,因此我建议您也依赖于Pythonic代码约定,并将其转变为“受保护的”成员:

class Character:
    def __init__(self):
        self._name = "test"


class Warrior(Character):
    def __init__(self):
        super().__init__()

    def getName(self):
        print(self._name)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用递归,继承和封装时,如何在JavaScript中保留正确的“ this”上下文

来自分类Dev

如何在jsp中同时使用引号和反斜杠?

来自分类Dev

如何在Cassandra的查询中同时使用ORDER BY和IN?

来自分类Dev

如何在HTML中同时使用<b>标签和<a>标签?

来自分类Dev

如何在我的网站中同时使用Laravel和Drupal?

来自分类Dev

如何在Laravel中同时使用get和分页

来自分类Dev

如何在MongoDB中同时使用findOne和聚合?

来自分类Dev

如何在Visual Studio和Mac中同时使用Xamarin

来自分类Dev

如何在MainActivity中同时使用AppBaseActivity和ActionBarActivity

来自分类Dev

如何在Laravel中同时使用Web和API防护?

来自分类Dev

如何在Laravel 5中同时使用orderBy和Paginate

来自分类Dev

如何在 sed 中同时使用 q 和 s 命令?

来自分类Dev

如何在管理菜单中同时使用 Resource 和 MenuItem

来自分类Dev

如何在 minimatch 模式中同时使用 NOT 和 OR 进行过滤?

来自分类Dev

我如何在字符串中同时使用 $ 和 @?

来自分类Dev

如何在 C 中同时使用 GTK 和 libcurl?

来自分类Dev

继承如何在Python 3中与kwargs配合使用?

来自分类Dev

继承如何在Python 3中与kwargs配合使用?

来自分类Dev

如何同时从继承的类和变量中获取值

来自分类Dev

重击 如何在“和”中同时插入

来自分类Dev

继承如何在Python中工作

来自分类Dev

如何在Python中编码实现继承?

来自分类Dev

OOP结构:继承和封装

来自分类Dev

如何在WPF中同时使用DataModel的同时使用按钮

来自分类Dev

同时使用继承和依赖注入

来自分类Dev

如何在JPA和Hibernate中同时使用主键和外键引用?

来自分类Dev

如何在Firefox和Chrome中同时使用“ let”(和受支持的ECMAScript 6功能)

来自分类Dev

如何在R中同时使用startsWith和str_length和多个前缀

来自分类Dev

如何在Python中同时启动线程

Related 相关文章

  1. 1

    使用递归,继承和封装时,如何在JavaScript中保留正确的“ this”上下文

  2. 2

    如何在jsp中同时使用引号和反斜杠?

  3. 3

    如何在Cassandra的查询中同时使用ORDER BY和IN?

  4. 4

    如何在HTML中同时使用<b>标签和<a>标签?

  5. 5

    如何在我的网站中同时使用Laravel和Drupal?

  6. 6

    如何在Laravel中同时使用get和分页

  7. 7

    如何在MongoDB中同时使用findOne和聚合?

  8. 8

    如何在Visual Studio和Mac中同时使用Xamarin

  9. 9

    如何在MainActivity中同时使用AppBaseActivity和ActionBarActivity

  10. 10

    如何在Laravel中同时使用Web和API防护?

  11. 11

    如何在Laravel 5中同时使用orderBy和Paginate

  12. 12

    如何在 sed 中同时使用 q 和 s 命令?

  13. 13

    如何在管理菜单中同时使用 Resource 和 MenuItem

  14. 14

    如何在 minimatch 模式中同时使用 NOT 和 OR 进行过滤?

  15. 15

    我如何在字符串中同时使用 $ 和 @?

  16. 16

    如何在 C 中同时使用 GTK 和 libcurl?

  17. 17

    继承如何在Python 3中与kwargs配合使用?

  18. 18

    继承如何在Python 3中与kwargs配合使用?

  19. 19

    如何同时从继承的类和变量中获取值

  20. 20

    重击 如何在“和”中同时插入

  21. 21

    继承如何在Python中工作

  22. 22

    如何在Python中编码实现继承?

  23. 23

    OOP结构:继承和封装

  24. 24

    如何在WPF中同时使用DataModel的同时使用按钮

  25. 25

    同时使用继承和依赖注入

  26. 26

    如何在JPA和Hibernate中同时使用主键和外键引用?

  27. 27

    如何在Firefox和Chrome中同时使用“ let”(和受支持的ECMAScript 6功能)

  28. 28

    如何在R中同时使用startsWith和str_length和多个前缀

  29. 29

    如何在Python中同时启动线程

热门标签

归档