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装饰器