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

标签 python function class

所以我有这样一个类:

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/

相关文章:

java - 我怎样才能在我的 mainActivity 中实现这个类

android - Kotlin 中的 "_"符号是什么意思?

调用自身 N 次的 C++ 递归函数?

c++ - 将两个选项之间的参数传递给一个类

python - 未绑定(bind)的方法必须以实例作为第一个参数调用(而不是什么都没有)

javascript - 如何自动检测函数并返回值

python - 如何制作自定义的 TensorFlow tf.nn.conv2d()?

Python在循环执行其他代码时捕获用户输入?

python - python中if的问题

java - Python子进程调用预编译的java