python的类方法中下划线表示含义
__foo__: 定义的是特殊方法,一般是系统定义名字 ,如 __init__() 之类的。
_foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *
举例:
# test2.py _var = 3 def _method(): print(__name__) # 返回当前文件名称 def method(): return _method()
from test2 import * method() # test2 _method() # NameError: name '_method' is not defined. Did you mean: 'method'? print(_var) # NameError: name '_var' is not defined
__foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了
举例:
class Animal(object): def __init__(self, name) -> None: self.name = name self.__age = 1 a = Animal('a') print(a.name) # a print(a.__dict__) # {'name': 'a', '_Animal__age': 1} 可见其中的__age已经变为了_Animal__age print(a.__age) # 报错: # AttributeError: 'Animal' object has no attribute '__age' print(a._Animal__age) # 1 ## 创建继承Animal的子类Dog class Dog(Animal): pass b = Dog('b') print(b.__dict__) # {'name': 'b', '_Animal__age': 1} 其属性与父类相同 ## 创建继承自Animal的子类Cat class Cat(Animal): def __init__(self, name) -> None: super().__init__(name) self.__age = 2 c = Cat('c') print(c.__dict__) # {'name': 'c', '_Animal__age': 1, '_Cat__age': 2} 多了一个属于本类的私有属性
本文来自博客园,作者:海_纳百川,转载请注明原文链接:https://www.cnblogs.com/chentiao/p/16648564.html,如有侵权联系删除
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!