美文网首页
python 将名称封装到类中

python 将名称封装到类中

作者: 孙广宁 | 来源:发表于2022-05-28 23:44 被阅读0次
8.5 我们将私有数据封装到类的实例上,但是有需要考虑到python缺乏对属性的访问控制
  • 第一个规则就是任何以单下划线 _ 开头的名字应该总是被认为只属于内部实现 比如
>>> class A:
...     def __init__(self):
...         self._internal =0
...         self.public=1
...     def public_method(self):
...         print("public")
...     def _internal_method(self):
...         print("internal")
...
  • python本身不会阻止外部来调用内部方法,但是这样的调用被认为是不优雅的,而且还可能导致内部代码脆弱。
  • 同样,模块里的下划线开头的方法的使用也要格外小心,比如sys._getframe()

在类中的双下划线方法 __

>>> class B:
...     def __init__(self):
...         self._private = 0
...     def __private_method(self):
...         print("private")
...     def public_method(self):
...         self.__private_method()
...
>>>
  • 以双下划线大头的名称会导致出现名称重整的行为。
  • 上面这个类中的私有属性会被分别重命名为_B__private 和_B__private_method
  • 这样的目的就是为了继承,这样的属性不能通过继承而覆盖,比如
>>> class C(B):
...     def __init__(self):
...         super().__init__()
...         self._private =1
...     def __private_method(self):
...         print("private c")
...
  • 这里的私有属性_private和方法__private_method会被重命名为_C_private和_C__private_method,这和基类的B中的重命名称不同

相关文章

  • 将名称封装到python类中

    在其它的编程语言中,一般都有对属性的访问控制,而在python并没有这一特性,那么我们应该如何应对这个问题?常用的...

  • python 将名称封装到类中

    8.5 我们将私有数据封装到类的实例上,但是有需要考虑到python缺乏对属性的访问控制 第一个规则就是任何以单下...

  • 补充

    面向对象 — 封装—— 对同一类方法封装到类中—— 将数据封装到对象中调用类的实例方法不需要加selfeg:act...

  • 04.less中的混合,带参数混合

    less中的混合 什么是less中的混合(Mixin)?将需要重复使用的代码封装到一个类中,在需要使用的地方调用封...

  • D基础

    访问控制 封装:将数据封装到类的内部,将算法封装到方法中。 封装结果:存在但不可见 修饰符: public:任何位...

  • 数据库连接优化

    制造一个类,将所有方法全部封装到类中,使用数据库时,只用调用相关的方法即可。

  • Python 引用其他.py文件

    Python 引用其他.py文件中的类和类的方法 HelloWorld是文件名称,Hello是类 from Hel...

  • Python爬虫练习 爬取图片

    virtualenv: 是针对python的包的多版本管理,通过将python包安装到一个模块来作为python的...

  • Python:类的定义和访问

    在python 中,首字母大写的名称一般是指类,类中的函数一般是指方法。定义类:class 类名(): 方法(注意...

  • python基础篇(五)

    类class Foods() 根据约定,在Python中,首字母大写的名称指的是类。下面是个简单的示例:方法:...

网友评论

      本文标题:python 将名称封装到类中

      本文链接:https://www.haomeiwen.com/subject/apgwprtx.html