手机版
你好,游客 登录 注册
背景:
阅读新闻

Python中单下划线(_)和双下划线(__)的特殊用法

[日期:2019-08-30] 来源:Linux社区  作者:lazyfish007 [字体: ]

函数使用单下划线_开头

  使用单下划线(_)开头的函数_func不能被模块外部以: from module import *形式导入。
  但可以用:from module import _func形式单独导入。

类属性和类方法使用单下划线_开头

  _开头为保护类型的属性和方法,仅允许类内部和子类访问,类实例无法访问此属性和方法。

类属性和类方法使用双下划线__开头

  __开头为私有类型属性和方法,仅允许类内部访问,类实例和派生类均不能访问此属性和方法。
  所以双划线比单划线权限更严格。

补充说明

对于__开头的属性和方法如果派生类一定要访问,使用单下划线+基类名+双下划线开头的属性和方法的形式,
   且双下划线开头的属性和方法后面最多只能以一个单下划线结束,否则也无法访问。

class BaseCls:
    def __init__(self, name, age, nick_name):
        self.name = name
        self.__nick_name_ = nick_name  # __nick_name后面最多以一个_结束,否则通过基类名混淆的方式也无法访问了。
        self.age = age


class SubCls(BaseCls):
    def __init__(self, name, age, addr, nick_name):
        super().__init__(name, age, nick_name)
        self.addr = addr
        self.a_nick_name = self._BaseCls__nick_name_ 

更多Python相关信息见Python 专题页面 https://www.linuxidc.com/topicnews.aspx?tid=17

Linux公社的RSS地址https://www.linuxidc.com/rssFeed.aspx

本文永久更新链接地址https://www.linuxidc.com/Linux/2019-08/160440.htm

linux
相关资讯       Python单下划线  Python双下划线 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款