Python 私有变量的应用

Python 中私有变量的采用 __变量名 定义变量,作用范围仅限于本类,可采用以下方式操作:(以下代码采用 python3 验证)

  • 改变或获取私有变量的值
class Test(object):
    def __init__(self):
        self.__num = 100

    def setNum(self, newNum):
        self.__num = newNum

    def getNum(self):
        return self.__num

test = Test()

# 调用setter方法
test.setNum(200)

# 调用getter方法
print("运行结果:", test.getNum())
  • 添加 property 属性

class Test(object):
    def __init__(self):
        self.__num = 100

    def setNum(self, newNum):
        self.__num = newNum

    def getNum(self):
        return self.__num

    num = property(getNum, setNum) # 添加 property

test = Test()

# 调用setter方法
test.num = 200  # 相当于调用了,test.setNum(200)

# 调用getter方法
print("运行结果:", test.num)    # 相当于调用了,test.getNum()

注:
若将 num = property(getNum, setNum) 中 getNum, setNum 交换位置 num = property(setNum, getNum) 会报如下错误:

Traceback (most recent call last):
  File "/Users/youmy/PycharmProjects/Learn/setget.py", line 17, in <module>
    test.num = 200
TypeError: getNum() takes 1 positional argument but 2 were given

Process finished with exit code 1
  • 使用 装饰器
class Test(object):
    def __init__(self):
        self.__num = 100

    @property
    def num(self):
        return self.__num

    @num.setter
    def num(self, newNume):
        self.__num = newNume

test = Test()

# 调用setter方法
test.num = 200  # 相当于调用了,test.setNum(200)

# 调用getter方法
print("运行结果:", test.num)    # 相当于调用了,test.getNum()
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 9,675评论 4 16
  • 你所浪费的今天是昨日死去的人奢望的明天 你所厌恶的现在,是你未来回不去的曾经 时间残忍,珍惜眼前人
    litreily阅读 1,598评论 0 1
  • 小马君一直以为不可能有人是完美的,不然我现在早就收获迷妹千千万了!可是自从见到他后,我终于懂了,上天为什么要关上你...
    冷眼观鱼阅读 3,089评论 0 0
  • “开会啦,开会啦!大家都到会议厅集合!”广播重复地播放着。 老母鸡懒洋洋地从鸡窝里走出来,扑腾扑腾翅膀,“干什么呀...
    大丸子取闹阅读 3,025评论 1 1
  • 这个黑黑的夜晚。 打开键盘不知故事该从何处说起, 脑海里有许多过往的镜头。 不停放映。 许白洋 这么多年了。 我过...
    小阿秀阅读 3,440评论 0 1

友情链接更多精彩内容