Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用类似于locals()的方法创建类实例变量_Python_String_Class_Variables_Concatenation - Fatal编程技术网

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在那里。非常感谢。是的,这看起来确实像您正在使用。