私有化的作用:()
- 影藏类的属性不被外界随意所修改
- 也可以进行修改但是需要使用set函数进行修改
- 如果想要获取对象的一个具体的属性就要使用get函数
私有化的作用一句话进行总结就是保护对象的属性不被随意的修改
class Person():
def __init__(self,name,age):
self.name = name ###没有私有化属性name
self.__age = age ##私有化属性age,__age
def __str__(self): ###__str__魔术方法的作用就是显示出具体的对象的属性,当我们答应对象名的时候
return ("{}的年龄是{}岁".format(self.name,self.__age)) ##记住前面如果对属性进行私有化了,当我们后面进行输出的时候就需要在属性前面加__
xiaohong = Person("xiaohong",18)
xiaohong.name = '小红' ###在创建对象的时候,在类的外部修改属性name
xiaohong.__age = 20 ###在创建对象的时候,在类的外部尝试修改私有属性属性__age
print(xiaohong)
小红的年龄是18岁 ###根据结果我们发现,没有进行私有化的属性name被修改了,但是加了私有化的属性age就没有被修改。此时就起到了保护类中属性的作用,让属性不能够被类外部的对象随便的修改
使用set函数修改私有化属性,使用get函数返回私有化属性
class Person():
def __init__(self,name,age,food):
self.name = name
self.__age = age ###私有化属性age
self.__food = food ###私有化属性food
def setage(self,age): ##set函数定义的时候,1:函数名必须是set开头的,后面加的无所谓。 2:必须加参数,加的是你想进行修改的私有属性,在后面调用get函数的时候,用参数的形式进行传入
if self.__age > 0 and self.__age < 120: ###在参数传进来的时候,get函数内部也可以进行判断,看是否进行修改该属性
self.__age = age
else:
print("你输入的年龄过于抽象,无法进行修改")
def setfood(self,food): ###修改food私有属性
self.__food = food
def getage(self): ###定义get函数,不需要加参数
return self.__age ###使用return,以返回值的形式返回私有属性
def getfood(self):
return self.__food
def __str__(self):
return ("{}的年龄是{}岁爱吃{}".format(self.name,self.__age,self.__food))
xiaohong = Person("xiaohong",18,"鸡腿") ###创建对象
xiaohong.name = '小红'
xiaohong.setage(50) ###调用前面定义的setage函数,你想修改的值以参数的形式进行传入
xiaohong.setfood("牛肉")
print(xiaohong)
AGE=xiaohong.getage() ###调用get函数,因为get函数是使用return将结果进行返回的,所以在调用函数的时候,前面必须使用变量来进行接这个返回值
print(AGE) ##将我想查看的对象的私有属性进行查看
FOOD=xiaohong.getfood()
print(FOOD)
小红的年龄是50岁爱吃牛肉
50
牛肉