Ich habe den folgenden Code:verwenden Sie eine Funktion entweder für Funktionen oder regelmäßige Attribute getattr
In [38]: %paste
def set_session_attribute(obj, attribute):
if attribute.endswith('()'):
attribute = attribute.replace('()', '')
return getattr(obj, attribute)()
else:
return getattr(obj, attribute)
class Thing(object):
def __init__(self):
self.legs = 4
def length(self):
return 6
## -- End pasted text --
In [39]: x = Thing()
In [40]: y = set_session_attribute(x, 'legs')
In [41]: y
Out[41]: 4
In [42]: z = set_session_attribute(x, 'length()')
In [43]: z
Out[43]: 6
Dies, weil mit "length()"
Aufruf ist nicht funktioniert (AttributeError, no attribute length()
)
Gibt es eine kürzere, Wartbare Möglichkeit, Funktionen wie diese zu machen? Vielen Dank.
tun kann ich die Funktion nicht ändern kann ich versuche – codyc4321
zu anrufen Haben Sie die Funktion 'set_session_attribute' oder eine Methode in der Klasse bedeutet' Thing 'oder eine andere Funktion? –
Ich kann nichts in den Klassen ändern, auf die ich zugreife, wie Thing(), ein riesiges System hängt davon ab – codyc4321