需要返回Class的Python函数返回None

时间:2015-12-25 17:57:42

标签: python

所以,我有这门课。它是静态类的Spell生成器,返回Weapon类,return类,法术力或健康药水值。 问题是,当我None返回print的值时,如果我将其替换为return,而不是str,那么在打印它时没有任何问题它在from random import randint from weapon_class import Weapon from spell_class import Spell class Treasure: @staticmethod def generate_random_index(limit): rand_index = randint(0, int(limit)) return rand_index @staticmethod def return_generated_treasure(max_mana, max_health): # generate num from 0-3 rand_gen_num = Treasure.generate_random_index(3) options = { 0: Treasure.generate_spell, 1: Treasure.generate_weapon, 2: Treasure.generate_mana_pot, 3: Treasure.generate_health_pot } # give arguments for mana and health potion functions only (for now) if rand_gen_num == 2: options[rand_gen_num](max_mana) elif rand_gen_num == 3: options[rand_gen_num](max_health) else: # call other functions, which doesn't need arguments, # like generate spell and weapon options[rand_gen_num]() @staticmethod def generate_spell(): with open('spell_names.txt', 'r') as f: database_spell_names = f.read().replace('\n', '').split(',') lst_len = len(database_spell_names) - 1 # generate number in range 0 - <spell names length> rand_gen_num = Treasure.generate_random_index(lst_len) spell_name = database_spell_names[rand_gen_num] spell_mana_cost = randint(5, 35) spell_damage = randint(5, 40) cast_range = randint(1, 3) # return spell return Spell(spell_name, spell_damage, spell_mana_cost, cast_range) @staticmethod def generate_weapon(): with open('weapon_names.txt', 'r') as f: database_weapon_names = f.read().replace('\n', '').split(',') lst_len = len(database_weapon_names) - 1 rand_gen_num = Treasure.generate_random_index(lst_len) weapon_name = database_weapon_names[rand_gen_num] weapon_damage = randint(5, 40) # return weapon return Weapon(weapon_name, weapon_damage) @staticmethod def generate_mana_pot(max_mana): max_possible_mana_limit = max_mana * 1/2 mana_portion = randint(0, int(max_possible_mana_limit)) return mana_portion @staticmethod def generate_health_pot(max_health): max_possible_health_limit = max_health * 1/3 health_portion = randint(0, int(max_possible_health_limit)) return health_portion def main(): award = Treasure.return_generated_treasure(100, 100) print (award) if __name__ == '__main__': main() 函数中。我怎样才能返回类型,所以它没有显示我?

<a href="#" class="easyui-tooltip" data-options="
            content: $('<div></div>'),
            onShow: function(){
                $(this).tooltip('arrow').css('left', 20);
                $(this).tooltip('tip').css('left', $(this).offset().left);
            },
            onUpdate: function(cc){
                cc.panel({
                    width: 500,
                    height: 'auto',
                    border: false,
                    href: '_content.html'
                });
            }

2 个答案:

答案 0 :(得分:3)

return_generated_treasure不会返回任何内容 - 那里没有return个关键字。

答案 1 :(得分:-1)

您需要将其他功能的输出全局化。当它们在函数内返回时,它们的返回变为本地,然后不通过类传播或进一步返回。