Python私有属性set 和get方法

Posted 郭祺迦

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python私有属性set 和get方法相关的知识,希望对你有一定的参考价值。

class Person(object):
#self不是关键字,换成其他的标识符也是可以的,但是一般不要改
def run(self):
print("run")
def eat(self,food):
print("eat" + food)
def say(self):
print("hello! my name is %s,i am %d years old" %(self.name,self.age))
def __init__(self,name,age,height,weight,money):#构造函数;
#定义属性
self.name = name
self.__age__ = age
self._height = height
self.weight = weight
self.__money = money#不被外部直接访问;相当于_Person__money
#通过内部的方法,去修改私有属性
#通过自定义的方法实现对私有属性的赋值与取值
def setMoney(self,money):#对私有属性的赋值
#数据过滤
if money < 0:
monry = 0
self.__money = money
def getMoney(self):#对私有属性的取值
return self.__money

per = Person("hanmeimei",20,170,68,1000)
per.setMoney(10)
print(per.getMoney())

‘‘‘
如果要让内部的属性,不被外部直接访问,在属性前加两个下划线__,
在Python中如果在属性前加两个下划线,那么这个属性就变成私有属性
‘‘‘

‘‘‘
不能直接访问per.__money是因为python解释器把__money变成
per.__money变成了_Person_money去访问,但是强烈建议不要这么干
注意:不同的解释器可能存在解释的变量不一致。
可以这么访问对象名._类名__私有属性 = 新值
per.__money
‘‘‘

#注意:在Python中__xx__这样的属性不是私有属性,这叫特殊变量;特殊变量的值可以直接访问
print(per.__age__)

#在Python中 _xx变量,这样的实例变量外部也是可以访问的,
#但是按照约定的规则,当我们看到这样的变量时,意思是“虽然我可以
#被访问,但是请把我视为私有变量,不要直接访问我"
print(per._height)
















































以上是关于Python私有属性set 和get方法的主要内容,如果未能解决你的问题,请参考以下文章

Python入门-6面向对象编程:06私有属性和私有方法(实现封装)-@property装饰器-get和set方法-总结

Python中的property类和@property装饰器

PHP中的__get()和__set()方法获取设置私有属性

php 中__set()和__get()的具体用法

封装 私有属性 static静态块

php中__set和__get要怎么理解?