gpt4 book ai didi

python - 在函数中将类的属性名称作为参数传递

转载 作者:太空宇宙 更新时间:2023-11-04 10:03:20 25 4
gpt4 key购买 nike

所以我有这样一个类:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com