需要返回类的Python函数,不返回任何类
伙计们,我上这门课。它是一个静态职业的需要返回类的Python函数,不返回任何类,python,Python,伙计们,我上这门课。它是一个静态职业的宝藏生成器,返回法术职业、武器职业、法力值或药水值。 问题是,当我返回它返回的值无,但如果我将其替换为打印,而不是返回,那么in会像在str函数中一样毫无问题地打印它。如何返回类型,使其不显示任何内容 from random import randint from weapon_class import Weapon from spell_class import Spell class Treasure: @staticmethod
宝藏
生成器,返回法术
职业、武器
职业、法力值或药水值。
问题是,当我返回它返回的值无
,但如果我将其替换为打印
,而不是返回
,那么in会像在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()
来自随机导入randint
从武器类进口武器
从咒语类导入咒语
班级珍藏:
@静力学方法
def生成随机索引(限制):
rand_index=randint(0,int(极限))
返回随机指数
@静力学方法
def返回\u生成的\u宝藏(最大法力、最大生命值):
#从0-3生成num
rand\u gen\u num=宝藏。生成随机索引(3)
选项={
0:宝藏。生成_咒语,
1:宝藏,生成武器,
2:宝藏。生成法力罐,
3:宝藏。生成\健康\罐
}
#仅提供法力和健康药水功能的参数(目前)
如果rand_gen_num==2:
选项[rand\u gen\u num](最大法力)
elif rand_gen_num==3:
选项[rand_gen_num](最大运行状况)
其他:
#调用其他不需要参数的函数,
#比如产生法术和武器
选项[rand\u gen\u num]()
@静力学方法
def生成_拼写():
以open('spell_names.txt','r')作为f:
数据库\u拼写\u名称=f.read().replace('\n','').split(','))
lst_len=len(数据库拼写名称)-1
#生成范围为0的数字-
rand\u gen\u num=宝藏。生成随机索引(lst\u len)
拼写名称=数据库拼写名称[rand\u gen\u num]
法术法力消耗=randint(5,35)
法术伤害=randint(5,40)
施法范围=randint(1,3)
#回击咒语
返回法术(法术名称、法术伤害、法术法力消耗、施法范围)
@静力学方法
def生成_武器():
以open('wearm_names.txt','r')作为f:
数据库名称=f.read().replace('\n','').split(','))
lst_len=len(数据库武器名称)-1
rand\u gen\u num=宝藏。生成随机索引(lst\u len)
武器名称=数据库武器名称[rand\u gen\u num]
武器伤害=randint(5,40)
#还击武器
返回武器(武器名称,武器伤害)
@静力学方法
def生成法力值(最大法力值):
最大可能法力限制=最大法力*1/2
法力部分=randint(0,int(最大可能法力限制))
返回法力值部分
@静力学方法
def生成运行状况(最大运行状况):
最大可能健康极限=最大健康*1/3
健康部分=randint(0,int(最大可能健康极限))
返回健康部分
def main():
奖励=宝藏。返回生成的宝藏(100100)
印刷品(奖项)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
main()
返回\u生成的\u宝藏
不返回任何东西-那里没有返回
关键字。您需要将其他函数的输出设置为全局。当它们在函数中返回时,它们的返回将成为本地的,然后不会通过类传播或进一步返回 它通过其他函数链接,它们返回一个结果?它调用其他函数,然后丢弃(ir)返回值。哦,是的,选项前面的一个返回起了作用。谢谢大家!@恩科尔恰科夫:如果这个答案对你有帮助的话,请接受它:)拥有一个只有静态方法的类有什么意义?难道你不能用一堆函数来编写一个模块吗?我是Python新手,但仍然不知道模块是什么。还想练习静态类和函数。为了简单起见,模块是一个.py文件。如果由于语义原因需要将某些函数和/或类组合在一起,则应将它们写入单独的模块(.py文件),然后导入。