用户创建的类

2024-05-14 21:30:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习Python,跟随一本书(Python编程绝对初学者,第3版)。 这本书给出了一个类似模拟人生的基本应用程序的例子,其中创建了有限数量的“生物”,用户必须喂养和玩它们,增加了它们的无聊和饥饿值。 我在练习使用课程,并试图制作我自己的游戏。用户会看到一个菜单,用户可以在其中购买/创建新的sim卡,删除旧的sim卡,或与现有的sim卡进行交互。 我遇到的问题是创建新的类。用户最初会看到一个屏幕,询问他们想做什么,如果他们按X,他们将被带到createnewsim函数。然而,问题是当创建新类时:

nameofsim = input("what would you like to call your new sim?")
newsim = sim(nameofsim)

如果用户创建另一个,它将覆盖现有的一个,因为名称newsim无法更改,正如我在前面的问题中发现的,或多或少。在

那么,如何分配新的对象名,或者防止旧的sim被覆盖,从而允许创建多个新的sim??在


Tags: 用户应用程序游戏数量编程菜单生物sim
3条回答

你可以像这样编一本模拟人生词典

sim_dict = {}
while True:
    nameofsim = input("what would you like to call your new sim?")
    if nameofsim == "":
        break
    sim_dict[nameofsim] = Sim(nameofsim)

如果用户创建了一个名为“dave”的sim卡,则可以使用

^{pr2}$

但是当你在写程序时,你无法猜测用户会给模拟人生起什么名字,所以你经常会在这样的循环中访问它们

for nameofsim, sim in sim_dict.items():
    if sim.birthday==today:
        sim.age+= 1

把你的sim类存储在一个列表或字典中;例如

class Sim(object):
    def __init__(self, name):
        self.name = name

names = ['tim','dave','jane']
sims = {}
for name in names:
    sims[name] = Sim(name)

jakobbowyer已经回答了您的问题,但是我想我应该添加一个关于Python变量的注释。考虑以下代码:

newSim = Sim('Bob')

oldSim = newSim

newSim = Sim('George')

在这个例子中,最终结果是oldSim = Bob和{}。请注意,变量引用的对象不会被变量赋值破坏或覆盖。唯一改变的是变量名引用的内存位置。在

相关问题 更多 >

    热门问题