我如何通过列表创建多个属性,例如:
我的代码:
class test():
def __init__(self, name):
pass...
def test2(self, lista):
但是用这种方法我创建了一个对象(列表的最后一个元素。
如何创建多个self.ris以生成多个对象?
最佳答案
使用setattr
将属性名称设置为变量:
class pkg():
def __init__(self, name):
self.name = name
lista_ = self.dai_lista(lista)
print lista_
for i in lista_:
i = i.rstrip()
setattr(self, 'ris'+i, riso(i))
def dai_lista(self, lista):
print "sono in dai lista"
return lista
class riso():
def __init__(self, nome):
self.nome = nome
def print_nome(self):
print self.nome
lista = ['a', 'b', 'c' ]
pippo = pkg('pippo')
pippo.risa.print_nome()
pippo.risb.print_nome()
pippo.risc.print_nome()
输出:
sono in dai lista
['a', 'b', 'c']
a
b
c
但是,尽管这可行,但我认为动态创建实例属性是一种不好的做法。相反,您应该使用字典来存储以下类:
class pkg():
def __init__(self, name):
self.name = name
lista_ = self.dai_lista(lista)
print lista_
self.ris = {}
for i in lista_:
i = i.rstrip()
self.ris[i] = riso(i)
def dai_lista(self, lista):
print "sono in dai lista"
return lista
class riso():
def __init__(self, nome):
self.nome = nome
def print_nome(self):
print self.nome
lista = ['a', 'b', 'c' ]
pippo = pkg('pippo')
pippo.ris['a'].print_nome()
pippo.ris['b'].print_nome()
pippo.ris['c'].print_nome()
输出与使用属性相同。
关于python - Python-如何通过列表创建多个属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52042553/