第一种写法
-
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