如果你要定义私有属性,在属性名前加下划线_,如 self._attr 不过,这只是种约定,要是显式写出属性名还是可以访问的。如 obj._attr 那双下划线呢? 看个例子吧: >>> class A: _attr=9 a=99 __cc=888 def __init__(self): self.__dd=111 >>> a=A() >>> a.a 99 >>> a._attr 9 >>> a._A__cc 888 >>> a._A__dd 111 访问双下划线的属性,需要在属性名前加_类名;也许,这就是你要找的特殊方法了吧~~ 还有个办法,就是闭包。利用闭包,可以给对象定义一些私有静态变量~ 闭包 class C: def __init__(self): self.次数 = self._计数器() def _计数器(self): 计数 = 0 def 加一(): nonlocal 计数 计数 += 1 return 计数 return 加一 cc = C() print(cc.次数()) # 1 print(cc.次数()) # 2 print(cc.次数()) # 3 外部无法访问 cc的内部变量计数,只能通过 cc.次数()这个方法来获得计数的值。
如果你要定义私有属性,在属性名前加下划线
_
,如self._attr
不过,这只是种
约定
,要是显式写出属性名还是可以访问的。如obj._attr
看个例子吧:
访问双下划线的属性,需要在属性名前加
_类名
;也许,这就是你要找的
特殊方法
了吧~~还有个办法,就是闭包。
利用闭包,可以给对象定义一些私有静态变量~
闭包
外部无法访问
cc
的内部变量计数
,只能通过cc.次数()
这个方法来获得计数
的值。