将类的属性名称作为参数传递给函数

时间:2017-02-19 17:04:43

标签: 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 case:

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。我将传递对象和我将使用的变量,但是我将访问其他变量。

2 个答案:

答案 0 :(得分:2)

您可能想要使用setattr

def set(object, name):
    setattr(object, name, 5)

答案 1 :(得分:2)

扩展Daniel在答案中显示的内容,您可以先使用fillna检查对象是否具有该属性,然后使用hasattr()设置该属性的值。

<html ng-app="MyApp">

注意:看看这个setattr(),它显示了确定对象是否具有属性的正确方法。我的意思是Click <a href="about.html">here</a> to go to About 不包含方法名称。

相关问题