python怎么让属性只能通过特定方法访问其他方法访问不到
本文介绍了python怎么让属性只能通过特定方法访问其他方法访问不到的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
RT 该怎么写啊?
解决方案
如果你要定义私有属性,在属性名前加下划线_
,如 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.次数()
这个方法来获得计数
的值。
这篇关于python怎么让属性只能通过特定方法访问其他方法访问不到的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文