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