如果我要有一个列表aList = ['Apple', 'Banana', 'Cherry', 'Date']
,并且我想使列表中的每个项目成为一个对象,例如,与Banana = AClass()
等效。完成此操作后,我将能够为列表中的每个项目创建并调用self.anything
。
我该怎么做?
本质上,这就是我要实现的目标:
import random
class Fruit:
def __init__(self):
self.tastiness = random.randint(1,10)
fruits = ['Apple', 'Banana', 'Cherry', 'Date']
fruits[1] = Fruit() # Creating a variable from the list
if Banana.tastiness < 5:
print('Not tasty enough')
答案 0 :(得分:4)
鉴于您的类和名称列表,您可以使用dict理解来创建水果实例,并可以通过其名称合理访问它们:
fruits = ['Apple', 'Banana', 'Cherry', 'Date']
fruits = {k: Fruit() for k in fruits}
if fruits['Banana'].tastiness < 5:
print('Not tasty enough')
虽然可以使用动态名称创建变量(以便您的Banana.tastiness
可以使用),但我强烈建议您这样做。
答案 1 :(得分:1)
IIUC,这是您想要做的:
使用字符串作为键:
dfruits = {}
for f in fruits:
dfruits[f] = Fruit()
词典理解风格
dfruits = {i: Fruit() for i in fruits}
为字典使用整数键:
dfruits = {}
for i,f in enumerate(fruits):
dfruits[i] = Fruit()
或
dfruits = {i: Fruit() for i, _ in enumerate(fruits)}
答案 2 :(得分:-1)
您可能会创建一个父类“ Fruit”,并为“ Apple”,“ Banana”等子类创建子类。
这里是描述您要做的事情的文章。
https://www.digitalocean.com/community/tutorials/understanding-class-inheritance-in-python-3
我知道您可以创建一个对象数组,其中各个项目继承其各自类的特征,但是,我相信这些对象必须事先初始化您的水果/特定水果类型的对象。
x = Apple()
x.taste = "bitter"
list.append(x)