Python 使用类似于locals()的方法创建类实例变量
有时,我需要使用变量创建带有后缀的新变量,我可以使用如下内容:Python 使用类似于locals()的方法创建类实例变量,python,string,class,variables,concatenation,Python,String,Class,Variables,Concatenation,有时,我需要使用变量创建带有后缀的新变量,我可以使用如下内容: Number=5 locals()['First'+str(Number)]=5 导致变量First5=5 如何在类实例中执行相同的操作 class foo: def appender(self,bar): for i in range(bar): self.locals()['Number'+str(i)]=i #----- qq=foo() qq.appender(3) #iss
Number=5
locals()['First'+str(Number)]=5
导致变量First5=5
如何在类实例中执行相同的操作
class foo:
def appender(self,bar):
for i in range(bar):
self.locals()['Number'+str(i)]=i
#-----
qq=foo()
qq.appender(3) #issues...
我想创建qq.Number0、qq.Number1和qq.Number2,但它告诉我foo没有本地实例。如何连接字符串以在实例中创建新变量?
谢谢 要动态设置类实例的属性,可以使用内部方法
\uuuuu setattr\uuuu
class Foo(object):
def appender(self, bar):
self.__setattr__('Number' + str(bar), bar)
这应该给你:
>>>> foo = Foo()
>>>> foo.appender(1)
>>>> foo.Number1
1
您是在寻找
foo.\uuuuu dict\uuuuu
还是self.\uuuu dict\uuuu
?我想我是在寻找self.\uuuu dict\uuuu,因为我只希望它与实例关联。每个实例可能有不同数量的“bar”,但可能我只是感到困惑……我想我明白了。您希望动态设置一个类的属性,以便也可以从值创建名称,对吗?谢谢MrAlias-我认为这是正确的路径,尽管Python告诉我foo没有属性“setattr”。下划线很重要:setattr!=__setattr\uuuu
还应确保在python2中使用新的类样式(即类foo(对象):
),就是这样!我是用foo()而不是foo(object)创建类的。现在settattr在那里。非常感谢。是的,这看起来确实像您正在使用。