python 中@property的编程深入用法详解

摘要: Python的@property装饰器用来把一个类的方法变成类的属性调用。

 

(1)普通用法

用于设置类的读写属性,只读和只写属性。

class Student(object):

    @property
    def birth(self):
        return self._birth

    @birth.setter
    def birth(self, value):
        self._birth = value

    @property
    def age(self):
        return 2018 - self._birth

上面的birth可读写属性,而age就是一个只读属性,因为age可以根据birth和当前时间计算出来。

用法:

Me = Student()

Me.birth = 1992     #直接对 Me._birth赋值,不用写成 Me.birth(1992 )

print(Me.birth)  #直接读取 Me._birth

print(Me.age )   #读取 Me._age赋值

Me.age =29        #出错,age不可写

(2)深入用法(编程常用)   

用于耦合两个类的方法(即函数)

class Data(object):
    def __init__(self,num1,num2):
        self._age1=int(num1)
        self._age2 = int(num2)

    def age_add(self,num3):
        return self._age1+self._age2+num3



class Person(object):
    def __init__(self,data1,data2):
        self._info=Data(data1,data2)

    @property
    def info(self):
        return self._info



if __name__ == '__main__':
    Me=Person(16.3,1.6)
    age=Me.info.age_add(10)      #Me.info实际上就是Me._info,是一个初始化了的Data类
    print(age)                   #结果为27

猜你喜欢

转载自blog.csdn.net/qq_23981335/article/details/82690765