如何创建一个可以在python中创建类变量的方法?

时间:2015-07-05 15:42:26

标签: python

让我们说我想创建一个具有向函数添加变量的方法的对象。例如,假设我有一个名为obj的对象。当我写obj.create_var(" sample_variable")时,我现在可以调用obj.sample_variable。本质上我想要一个方法,它将变量的名称作为参数,并在对象上创建该变量。我该怎么写这个方法?

3 个答案:

答案 0 :(得分:2)

def createvar(self, name, value):
    setattr(ClassName, name, value)

答案 1 :(得分:1)

您可以使用setattr函数使用字符串设置对象的属性,甚至不需要在对象中将其创建为单独的方法。

示例 -

class CA:
    pass
A()
setattr(c,'hello2','bye2')
c.hello2
>>> 'bye2'

如果你真的想让它成为你对象中的一个方法,那么你也可以使用相同的函数 -

class CA:
    def varcreater(self, var, val):
            setattr(self, var, val)
c = CA()
c.varcreater('hello','bye')
c.hello
>>> 'bye'

如果你想设置类变量,那么作为第一个参数传递类而不是实例,例如 -

class CA:
    def varcreater(self, var, val):
            setattr(CA, var, val)

答案 2 :(得分:0)

class c(object):
    def add(self, name, value):
        # use the __class__ field
        self.__class__.name = value

# create two objects of the same type
o1 = c()
o2 = c()

# add a class variable through the first object    
o1.add("name", "value")

# it's correctly available in the second object too
print o2.name