美文网首页
Python 私有字段的只读特性和可写特性

Python 私有字段的只读特性和可写特性

作者: SateZheng | 来源:发表于2016-12-15 00:43 被阅读478次

    @property 在类中一般和私有字段一起使用。

    类中如果有私有字段在外部是无法直接访问的,通过@property使其可读或可写。

    经典类

    经典类中的私有字段是可读可写的。(没有只读功能)

    class Person:
        def __init__(self):
            self.__name = 'sate'
    
        @property
        def Name(self):
            return self.__name
    
    p1 = Person()
    print p1.Name           #通过@property 可读。
    p1.Name = 'zheng'       #可写
    print p1.Name
    

    新式类

    新式类中的私有字段是只读,不可写,如果要可写,需要再创建一个被@xxx.setter修饰的特性。

    如果想设置为外部只读或者外部可写特性,可使用如下方法:

    # coding=utf-8
    
    class Class_1(object):
        def __init__(self, name, age):
            self.name = name
            # 定义一个私有字段age,外部无法直接访问
            self.__age = age
    
        def read_name(self):
            print 'my name is %s ' % self.name
    
    # 外部无法访问,但是可以通过内部访问到。
        def read_age(self):
            print 'my age is %s' % self.__age
    
    # 使用属性方法将age()方法变为一个类的静态属性。使之变为可读属性。
        @property
        def age(self):
            return self.__age
    
    # 使__age私有字段变成可写,只需调用age属性并直接赋值即可(装饰器格式为‘@函数名.setter’)
    # 如果私有变量要设置为只读不可写,则直接去除本段即可。
        @age.setter
        def age(self, value):
            self.__age = value
    
    cla = Class_1('sate', 12)
    
    # 读取正常字段
    cla.read_name()
    
    # 调用方法读取__age私有字段
    cla.read_age()
    
    # 使用属性方法读取__age私有字段
    print cla.age
    
    # 更改类中的__私有字段
    cla.age = 18
    print cla.age
    
    # 结果==>
    my name is sate 
    my age is 12
    12
    18
    

    相关文章

      网友评论

          本文标题: Python 私有字段的只读特性和可写特性

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