所以我有这样一个类:
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
显然我可以将 'a' 作为字符串传递并进行一些 if 情况:
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 的原因。我将传递我将使用的对象和变量,但还有其他我将访问的变量。
最佳答案
扩展 Daniel 在他的回答中显示的内容,您可以首先使用 hasattr()
检查对象是否具有该属性。 , 然后使用 setattr()
设置属性的值.
def function(object, a):
if name in object.__dict__:
setattr(object, a, 5)
注意:看看这个comment ,它显示了确定对象是否具有属性的正确方法。我的意思是 __dict__
不包含方法名称。
关于python - 在函数中将类的属性名称作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42330143/