python中类的私有化

# 类的私有化
# 封装:1.私有化属性 2.定义共有set和get方法
# __属性名,就是将属性私有化,访问范围仅仅限于类中


class Person:
    def __init__(self, name, age):
        self.__name = name
        self.__age = age
        self.__score = 59

    def __str__(self):
        return '姓名:{},年龄:{},考试分数:{}'.format(self.__name, self.__age, self.__score)

    # 定义共有的set和get方法

    # set是为了赋值
    def setName(self, name):
        self.__name = name

    def setAge(self, age):
        self.__age = age

    # get是为了取值
    def getName(self):
        return self.__name

    def getAge(self):
        return self.__age


p = Person('张三', 30)


# print(dir(p))
# p.setName('李四')
# print(p.getName())
# print(p.getAge())


#  使用装饰器实现私有化
class Person2:
    def __init__(self, name, age):
        self.__name = name
        self.__age = age

    def __str__(self):
        return '姓名:{},年龄:{}'.format(self.__name, self.__age)

    # 现有getXXX
    @property
    def name(self):
        return self.__name

    # 再有setXXX,因为set是依赖get的
    @name.setter
    def name(self, name):
        if len(name) > 6:
            self.__name = name
        else:
            print('名字不符合规范')

    @property
    def age(self):
        return self.__age

    @age.setter
    def age(self, age):
        self.__age = age


p2 = Person2('王五', 40)
print(p2)
p2.name = 'zhaoqian'
print(p2)

------学习贵在分享,贵在记录,贵在总结。
原文地址:https://www.cnblogs.com/kevin1220/p/14422814.html