zoukankan      html  css  js  c++  java
  • 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)
    
    
    ------学习贵在分享,贵在记录,贵在总结。
  • 相关阅读:
    126.输入输出深入以及小结
    125.C++输入小结
    124.C++输出小结
    123.static静态函数与类模板
    123.static静态函数和函数模板
    122.模板与友元
    121.类模板当做参数
    120.嵌套类模板
    119.类模板的默认参数规则
    正睿 2019 省选附加赛 Day1 T1 考考试
  • 原文地址:https://www.cnblogs.com/kevin1220/p/14422814.html
Copyright © 2011-2022 走看看