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)
    
    
    ------学习贵在分享,贵在记录,贵在总结。
  • 相关阅读:
    css text-transform 属性
    CSS3 @media编写响应式页面
    css :first child与:first-of-type的区别
    前端外语网站合集
    webpack配置自动添加CSS3前缀
    vue中extend/component/mixins/extends的区别
    js缓动函数
    [LeetCode] 78. 子集
    [LeetCode] 76. 最小覆盖子串
    [LeetCode] 75. 颜色分类
  • 原文地址:https://www.cnblogs.com/kevin1220/p/14422814.html
Copyright © 2011-2022 走看看