Так у меня есть класс вроде этого:Pass имя атрибута класса в качестве параметра в функции
class var:
def __init__(self, x, y, z):
self.x = x
self.y = y
self.z = z
object = var(1, 2, 3)
И я хочу сделать функцию, которая принимает в качестве параметра имя одного из атрибутов моего класса, чтобы сделать что-то вроде этого (например):
def function(object, a):
object.a = 5
Очевидно, что я могу передать «а» в виде строки и сделать некоторые, если случаи:
def function(object, a):
if (a == 'x'):
object.x = 5
if (a == 'y'):
object.y = 5
if (a == 'z'):
object.z = 5
Но в этом случае мне пришлось бы скопировать весь код внутри if (очевидно, я хочу сделать больше, чем просто присвоить значение). Я хотел бы знать, есть ли способ сделать это.
редактировать:
Чтобы уточнить, мой объект имеет несколько переменных:
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
И я к ним доступ в мои функции. Вот почему я не передаю просто object.x или object.y. Я передам объект и переменную, которую я буду использовать, но есть и другие переменные, к которым я буду обращаться.
Есть ли причина, по которой вы просто не передаете 'object.a' как один параметр, а не' object' и 'a' как два отдельных параметра? –
@BryanOakley OP хочет установить значение * любого * атрибута объекта, который * я думаю * не будет достигнут, перейдя в 'object.a' –
@ Sнаđошƒаӽ: ну, вы можете передать любой атрибут, который вы хотите: 'function (object.a)', 'function (object.b)' и т. д. Что бы вы ни проходили, это то, что устанавливается. –