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