美文网首页
封装(隐藏数据和保护属性)

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

作者: 愿你有闯荡风雪的骁勇 | 来源:发表于2018-11-01 20:43 被阅读0次

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

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

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

    """

    相关文章

      网友评论

          本文标题:封装(隐藏数据和保护属性)

          本文链接:https://www.haomeiwen.com/subject/pdkfxqtx.html