• Python私有属性练习


    '''
    单下划线、双下划线、头尾双下划线说明:

    __foo__: 定义的是特殊方法,一般是系统定义名字 ,类似 __init__() 之类的。

    _foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问。(约定成俗,不限语法)

    __foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。
    ==============================================================
    class Person(object):

    def __init__(self, name, age):
    # self.name = name
    self.__name = name # __name即私有属性,设置 _Person__name = ”yuan“
    self.__age = age

    def foo(self):
    print("姓名:", self.__name) # self._Person__name

    def get_name(self): #查看私有属性name方法
    return self.__name

    def set_name(self, new_name): #修改私有属性name方法
    self.__name = new_name

    def set_age(self, new_age):#修改私有属性age方法
    if new_age < 200:
    self.__age = new_age
    raise Exception("年龄不能超过两百岁!")

    def get_age(self): #查看私有属性name方法
    print(self.__age)


    #p1 = Person("rain", 22)
    #p1.foo() # 姓名: rain
    #print(dir(p1)) # ['_Person__age', '_Person__name', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'foo', 'get_age', 'get_name', 'set_age', 'set_name']

    #ret = p1.get_name()
    #print(ret) # rain
    #p1.set_name("rains")
    #print(p1.get_name()) # rains

    #p1.age = 10000
    #p1.get_age() # 22
    #p1.set_age(1560)
    #p1.get_age() # Exception: 年龄不能超过两百岁!


    ######################################################

    class Person(object):

    def __init__(self, name, age):
    # self.name = name
    self.__name = name # __name即私有属性,设置 _Person__name = ”yuan“
    self.age = age
    self._score = 100

    def get_name(self):
    print(self.__name)


    class Teacher(Person):

    def get_age(self):
    print(self.age)
    print(self._score)


    yuan = Teacher("xi", 22)
    # print(dir(yuan))
    yuan.get_name() # xi

    '''
  • 相关阅读:
    python+OpenCV 特征点检测
    如何使用《DB 查询分析器》高效地生成旬报货运量数据
    Hive-RCFile文件存储格式
    NET:交换机的背板带宽,交换容量,包转发率区别
    css:cdata
    [ZOJ 3623] Battle Ships
    [NYOJ 860] 又见01背包
    [Uva 11825] Hackers’ Crackdown
    2014-10-29
    [转] 三鲜之所在
  • 原文地址:https://www.cnblogs.com/A121/p/16162974.html
Copyright © 2020-2023  润新知