zoukankan      html  css  js  c++  java
  • python中的下划线

    python中的下划线

    _XXX 不能用from module import * 导入

    __XXX 类中的私有变量名,只有本类能访问,子类也不能访问。

    XXX 系统定义的名字,用来区别其他用户自定义的命名 Class1.doc # 类型帮助信息 'Class1 Doc.'

    class 里单下划线开头的属性和方法外界仍然是可以访问的,所以更多的时候它是一种暗示或隐喻

    class Person(object):
        def __init__(self,name,age):
            self.name = name
            self._age = age
        def play(self):
            print(self.name,self._age)
    
    • Class1.name # 类型名称 'Class1'
    • Class1.module # 类型所在模块 'main'
    • Class1.bases # 类型所继承的基类 (<type 'object'>,)
    • Class1.dict # 类型字典,存储所有类型成员信息。 <dictproxy object at 0x00D3AD70>
    • Class1().class # 类型 <class 'main.Class1'>
    • Class1().module # 实例类型所在模块 'main'
    • Class1().dict # 对象字典,存储所有实例成员信息。 {'i': 1234}
    • “单下划线” 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量;单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用“from xxx import *”而导入
    def main():
        p = Person('王大锤',12)
        p.play()
        """
        '单下划线'的保护变量
        大多数Python程序员会遵循一种命名惯例就是让属性名以单下划线开头来表示属性是受保护的,
        本类之外的代码在访问这样的属性时应该要保持慎重。
        这种做法并不是语法上的规则,单下划线开头的属性和方法外界仍然是可以访问的,所以更多的时候它是一种暗示或隐喻
        """
        print(p._age)
    
    if __name__ == '__main__':
        main()
    

    “双下划线” 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。通过对象名._类名__xxx这样的方式可以访问.

    class Person(object):
    
        def __init__(self,name,age):
            self.name = name
            self.__age = age
    
        def play(self):
            print(self.name,self.__age)
    
    def main():
        p = Person('王大锤',12)
        p.play()
        # ‘双下划綫’的私有变量,只能通过  对象名._类名__XXX才能访问,只有类自己能访问
        print(p._Person__age)
    
    if __name__ == '__main__':
        main()
    
  • 相关阅读:
    Python 迭代器&生成器,装饰器,递归,算法基础:二分查找、二维数组转换,正则表达式,作业:计算器开发
    python--如何在线上环境优雅的修改配置文件?
    Python补充--Python内置函数清单
    python3--open函数
    内置函数--map,filter,reduce
    Python内置函数—bytearray
    python lambda表达式简单用法
    Python浅拷贝copy()与深拷贝deepcopy()区别
    点击复制
    eval(function(p,a,c,k,e,d){e=function(c)加解密
  • 原文地址:https://www.cnblogs.com/wangjiale1024/p/10486771.html
Copyright © 2011-2022 走看看