ich habe folgenden Pseudocode für eine Klasse:
Code: Alles auswählen
class Foo(object):
def __init__(self):
self.say = self.say(what)
def say(self, what):
return 'I say:', what
Um das Ganze mal konkreter zu zeigen:
Code: Alles auswählen
In [26]: class Foo(object):
....: def __getattr__(self, attr):
....: if attr == 'bar':
....: return 'baz'
....:
....:
In [27]: foo = Foo()
In [28]: foo.bar
Out[28]: 'baz'
Code: Alles auswählen
In [29]: foo.bar = 'spam'
In [30]: foo.bar
Out[30]: 'spam'
Mein Ansatz ist bisher dieser:
Code: Alles auswählen
In [128]: class Foo(object):
def __getattr__(self, attr):
if attr == 'bar':
return 'baz'
return getattr(self, attr)
def __setattr__(self, attr, value):
if attr == 'bar':
pass
else:
setattr(self, attr, value)
.....:
.....:
In [138]: foo = Foo()
In [139]: foo.bar
Out[139]: 'baz'
In [140]: foo.bar = 'spam'
In [141]: foo.bar
Out[141]: 'baz'
EDIT: Die zweite Methode lässt sich natürlich einfacher ausdrücken mit `if not attr == 'bar':`.