esp*_*eed 3 python operator-overloading
如何在Python中模拟赋值运算符重载?例如...
class Example(object):
name = String()
age = Integer()
def __init__(self,myname,myage):
self.name.value = myname
self.age.value = myage
Run Code Online (Sandbox Code Playgroud)
而不是做self.name.value = name,你如何模拟赋值运算符的重载,以便当你执行self.name = myname时,myname被赋值给self.name.value?
Sin*_*ion 13
在这种非常特殊的情况下,在属性赋值中,您可以使用a descriptor.事实上,我怀疑在这个例子中,你正在使用,Integer而String实际上是描述符.
除了使用预制描述符之外,使用描述符的最简单方法是使用property().这是一个简短的例子:
>>> class Foo(object):
@property
def bar(self):
print 'bar'
return 'bar'
@bar.setter
def bar(self, value):
print 'bar =', value
>>> afoo = Foo()
>>> afoo.bar
bar
'bar'
>>> afoo.bar = 'baz'
bar = baz
>>>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7576 次 |
| 最近记录: |