1.[代码]属性访问只能通过一个接口访问,没法通过方法访问
class MyProperty(object):
def __init__(self, method):
self.method = method
self.method_dict = self.method()
def __get__(self, obj, type=None):
return self.method_dict['fget'](obj)
def __set__(self, obj, val):
self.method_dict['fset'](obj, val)
class Test(object):
def __init__(self, x):
self.__x = x
@MyProperty
def x():
def fget(self):
return self.__x
def fset(self, val):
assert isinstance(val, int), 'val must be an integer!'
self.__x = val
return locals()
t = Test(5)
print t.x
t.x = 10
print t.x
# 5
# 10
实例访问没法调用方法来访问数据,只能通过接口x 来访问属性并且修改属性