0

接下来,在我学习 Python 的过程中,我遇到了一个问题。可以在程序内部创建一个变量,通过连接字符串命名,并用于存储一个对象吗?

所以,我的对象:

class Veg:
    def __init__(self, x):
        self.name = x
        print('You have created a new vegetable:', self.name, end='\n')

现在,要创建一个变量:

tag = 1
newVegObj = 'veg' + str(tag) #Should create a variable named 'veg1'
newVegObj = Veg('Pepper') #Creates an object stored in 'newVegObj' :(

但我希望创建的对象存储在“veg1”中。然后我可以这样做:

tag = tag + 1
newVegObj = 'veg + str(tag) #Create a variable named 'veg2'
newVegObj = Veg('Tomato')

目标是 veg1.name = Pepper 和 veg2.name = Tomato,并且能够不断创建额外的变量来存储额外的蔬菜。

我不知道这是否可能。如果是这样,并且如果这需要一个复杂的解决方案,您能否提供一个有用的代码解释?希望它是一些简单的事情,我只是没有考虑。

提前致谢!你们是最棒的!

4

1 回答 1

0

考虑到您的评论,以下内容可能会很有用。

names = ['Tomato', 'Snoskommer', 'Pepper'] # a list containing 3 names
vegetables = {} # an empty dictionary

for name in names: # just textual: for each name in the names list ...
    new_veg = Veg(name) # create a new vegetable with the name stored in the variable 'name'
    vegetables[name] = new_veg # add the new vegetable to the vegetable dictionary

# at this point, the vegetables dictionary will contain a number of vegetables, which you can find by
# 'indexing' the dictionary with their name:
print(vegetables['Tomato'].name) # will print 'Tomato'

希望这有助于理解 Python 中的一些基础知识,尽管从一个简单的教程开始可能是最好的:)


为了扩展,可以在以后进行类似以下的更改:

def add_vegetable(name): if name in vegetables: print('已经有一个叫这个名字的蔬菜...') else: vegetables[name] = Veg(name)

调用函数将蔬菜添加到列表中:

add_vegetable('Cucumber')

之后字典将包含另一种名为“黄瓜”的蔬菜。

但再说一遍:通过一些介绍性教程,http ://python.org应该能够为您指出一些。

于 2013-03-20T15:02:25.260 回答