property

第一种写法

  • xxx = property(getXxx, setXxx)

一般规则如上,xxx是对象可以通过“.“语法来访问的属性
通过property(get方法, set方法)绑定xxx的getter和setter
这样外部调用的时候就可以通过.xxx 进行赋值或者获取值了。

  • 代码如下:

class Person(object):
    def __init__(self):
        self.__age = 18 # 这种前面加双下划线的是私有变量,外部无法访问

    def setAge(self, age):
        self.__age = age

    def getAge(self):
        return self.__age

    #这里是绑定age的setter/getter。
    #外部就可以使用 .age来设置或者获取__age的值了。
    age = property(getAge, setAge)

p = Person()
print("age is ",p.age) # age is  18
p.age = 20
print("age is ",p.age) # age is  20

第二种写法

  • 方法名是什么,property就是什么

  • @property写在getter方法上

  • @xxx.setter写在setter方法上

  • 要先写get方法,在写setter方法,顺序不能乱

class Person(object):
    def __init__(self):
        self.__age = 18 # 这种前面加双下划线的是私有变量,外部无法访问

# getter/setter的方法名相同
# getter方法在前,setter方法在后
# 方法名及时外部使用"."语法访问的属性
    @property
    def age(self): 
        return self.__age

    @age.setter
    def age(self, age):
        self.__age = age

p = Person()
print("age is ",p.age) # age is  18
p.age = 20
print("age is ",p.age) # age is  20

你可能感兴趣的:(property)