0

我仍在学习并喜欢构建我最终将在未来定期做的事情,以便让我更好地了解 x 是如何做到这一点或 y 是如何做到这一点的。

我还没有完全了解类是如何工作的,但是我设置了一个将通过多个类的调用。

getattr(monster, monster_class.str().lower())(1)

这称为:

class monster:
def vampire(x):
    monster_loot = {'Gold':75, 'Sword':50.3, 'Good Sword':40.5, 'Blood':100.0, 'Ore':.05}
    if x == 1:
        loot_table.all_loot(monster_loot)

这反过来又称之为......

class loot_table:
def all_loot(monster_loot):
    loot = ['Gold', 'Sword', 'Good Sword', 'Ore']
    loot_dropped = {}

    for i in monster_loot:
        if i in loot:
            loot_dropped[i] = monster_loot[i]

    drop_chance.chance(loot_dropped)

然后,最后,进入最后一堂课。

class drop_chance:
def chance(loot_list):

    loot_gained = []

    for i in loot_list:
        x = random.uniform(0.0,100.0)

        if loot_list[i] >= x:
            loot_gained.append(i)

    return loot_gained

这一切都有效,除了它没有返回 loot_gained。我假设它只是被返回到 loot_table 类,我不知道如何绕过它一直回到发布的第一行。我能得到一些见解吗?

4

2 回答 2

1

继续使用return

def foo():
  return bar()

def bar():
  return baz()

def baz():
  return 42

print foo()
于 2013-07-25T03:18:21.923 回答
0

我还没有完全了解课程是如何运作的......

非正式地,类定义是对将来要创建的类的对象(也就是类的实例)的描述。类定义包含代码(方法的定义)。对象(类实例)基本上包含数据。该方法是一种可以接受参数并且能够操作对象数据的函数。

这样,类应该代表现实世界对象的行为,类实例模拟现实世界对象的存在。方法表示对象应用在自身上的动作。

从这个角度来看,类标识符应该是描述类对象类别的名词。类实例标识符也应该是命名对象的名词。方法标识符通常是描述动作的动词。

在您的情况下,class drop_chance:至少由于以这种方式命名,因此至少是可疑的。

如果你想打印关于对象的一些合理的东西——比如使用——print(monster)然后定义__str__()类的方法——参见文档

于 2013-07-25T10:48:30.177 回答