Aen*_*aon 11 python properties
如何从内部调用Python(v2.7)setter属性__init__?我写了下面的课,但我不知道如何更改它以使其工作.我得到一个AttributeError: 'test' object has no attribute '_x'例外.这里有一些类似的问题但到目前为止找不到答案.这个想法是调用初始化程序进行一些处理/切片并将结果分配给属性
class test(object):
def __init__(self, a,b):
self._x = self.x(a,b)
@property
def x(self):
return self._x
@x.setter
def x(self, a, b):
self._x = "Get this from {} and make a dataframe like {}".format(a,b)
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 11
self.x是一个属性,所以你只需要像使用常规属性一样直接分配它:
def __init__(self, a, b):
self.x = (a, b)
Run Code Online (Sandbox Code Playgroud)
但是,setter 总是被赋予一个对象; 在上面的例子中,它传递了一个元组; 你可以解压缩它:
@x.setter
def x(self, value):
a, b = value
self._x = "Get this from {} and make a dataframe like {}".format(a,b)
Run Code Online (Sandbox Code Playgroud)
注意这个value论点; 这是赋值传递给setter的结果.
演示:
>>> class test(object):
... def __init__(self, a, b):
... self.x = (a, b)
... @property
... def x(self):
... return self._x
... @x.setter
... def x(self, value):
... a, b = value
... self._x = "Get this from {} and make a dataframe like {}".format(a,b)
...
>>> t = test(42, 'foo')
>>> t.x
'Get this from 42 and make a dataframe like foo'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5922 次 |
| 最近记录: |