通常把隐藏属性、方法与方法实现细节的过程称为封装。为了保护类里面的属性,避免外界随意赋值,可以采用如下方式解决。
1:把属性定义为私有属性,即在属性名的前面加上两个下划线。
2:添加可以供外界调用的两个方法,分别用于设置或获取属性值
"""
class Person:
def __init__(self,name,age):
self.name=name
self.age=age
# 使用构造方法设置name和age的值为"老王"和"30"
laowang=Person("老王",30)
#接着设置age的值为300。
laowang.age=300
print(laowang.age)
"""
class Person:
def __init__(self,name,age):
self.name=name
self.__age=age
#给私有属性赋值
def setNewAge(self,newAge):
#判断传入的参数是否符合要求,符合后才能赋值
if 0<newAge<=130:
self.__age=newAge
def getAge(self):
return self.__age
#创建对象
laowang=Person("老王",30)
laowang.setNewAge(130)
print(laowang.getAge())
"""
外界通过提供的上述两个方法分别设置和获取了私有属性__age的值。python中没有任何关键字来区分公有属性和私有属性,
它是以属性命名的方法进行区分的,如果属性名的前面加了两个下划线,就表明该属性是私有属性,否则就是公有属性。
laowang=Person("老王",30)
print(laowang.__age)
AttibuterError:'Person'object has no attribute '__age'
原因在于__age属性为私有属性,类的外面无法知道类里面的私有属性,更无法访问类的
私有属性。所以,为了能在外界访问私有属性的值,需要用到该类提供的用于设置和获取属性值的方法。
"""
网友评论