无法在Python中通过多个类返回

时间:2013-07-25 03:15:26

标签: python-3.x

我还在学习并喜欢构建我将来会定期做的事情,让我更好地了解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类,我不知道如何绕过它一直回到发布的第一行。我可以获得一些见解吗?

2 个答案:

答案 0 :(得分:1)

继续使用return

def foo():
  return bar()

def bar():
  return baz()

def baz():
  return 42

print foo()

答案 1 :(得分:0)

  

我还没有完全了解课程如何完成......

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

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

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

在你的情况下,至少class drop_chance:是可疑的,至少是因为这样命名。

如果您想打印关于该对象的合理内容 - 比如使用print(monster) - 然后定义该类的__str__()方法 - 请参阅the doc