So habe ich eine Klasse wie folgt:Pass Attributname der Klasse, die als Parameter in der Funktion
class var:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
object = var(1, 2, 3)
Und ich möchte eine Funktion machen, die den Namen eines der Attribute meiner Klasse als Parameter übernimmt, so etwas wie dieses (Beispiel) zu machen:
def function(object, a):
object.a = 5
Natürlich kann ich 'a' als String übergeben und einige, wenn Fälle machen:
def function(object, a):
if (a == 'x'):
object.x = 5
if (a == 'y'):
object.y = 5
if (a == 'z'):
object.z = 5
Aber in diesem Fall müsste ich den gesamten Code innerhalb der ifs kopieren (offensichtlich möchte ich mehr tun als nur einen Wert zuweisen). Ich würde gerne wissen, ob es einen cleveren Weg gibt, das zu tun.
edit:
Um zu klären, hat mein Objekt mehr Variablen:
class var:
def __init__(self, x, y, z, a, b, c):
self.x = x
self.y = y
self.z = z
self.a = a
self.b = b
self.c = c
Und ich werde diese in meinen Funktionen zugreifen. Deshalb gebe ich nicht einfach object.x oder object.y weiter. Ich werde das Objekt und die Variable übergeben, die ich verwenden werde, aber es gibt noch andere Variablen, auf die ich zugreifen werde.
Gibt es einen Grund, warum Sie 'object.a' nicht einfach als einzelnen Parameter übergeben, anstatt' object' und 'a' als zwei separate Parameter? –
@BryanOakley das OP möchte den Wert von * any * Attribut des Objekts, die * ich denke * wird nicht durch die Übergabe in 'object.a' –
@ Snađошƒаӽ: Nun, Sie können alle gewünschten Attribut übergeben: 'function (object.a)', 'function (object.b)' usw. Was immer Sie übergeben, wird festgelegt. –