码迷,mamicode.com
首页 > 编程语言 > 详细

Python私有属性set 和get方法

时间:2018-07-05 16:03:11      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:其他   实现   get   数据   取值   ini   self   构造函数   构造   

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方法

标签:其他   实现   get   数据   取值   ini   self   构造函数   构造   

原文地址:https://www.cnblogs.com/guojie-guojie/p/9268473.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!