封装(隐藏数据和保护属性)

通常把隐藏属性、方法与方法实现细节的过程称为封装。为了保护类里面的属性,避免外界随意赋值,可以采用如下方式解决。

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

            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属性为私有属性,类的外面无法知道类里面的私有属性,更无法访问类的

私有属性。所以,为了能在外界访问私有属性的值,需要用到该类提供的用于设置和获取属性值的方法。

"""

你可能感兴趣的:(封装(隐藏数据和保护属性))