我正在使用python创建一个Dungeons and Dragons Character Creator,并且正在编写这些武器。我重新创建了一些在以前的类似环境中无法工作的代码,并且我想知道如何在不需要每个变量的if语句的情况下工作,以便可以编辑其他属性和项目。在for循环中创建一个变量
目标是创建一个仅具有与其关联的属性(变量)的武器(对象)。
目前代码:
class Weapon:
def __init__(self, finesse, light, thrown, two_handed, versatile):
property_list = [finesse, light, thrown, two_handed, versatile]
for prop in property_list:
if prop != 0:
self.prop = prop
dagger = Weapon('finesse', 'light', 'thrown', 0, 0)
目前的变量不会为武器来创建;因此
dagger.finesse
不存在。理想情况下,'finesse'
将存储在变量dagger.finesse
中,而变量dagger.two_handed
不会由代码创建。
我可能忽略了一些简单的问题,并且可能存在重复的问题,但是我找不到与我正在寻找的答案类似的问题。
谢谢所有谁回答
编辑
谢谢@WKPlus一些格式化援助;我是新来的stackoverflow网站
我已经意识到感谢@abarnert更好的方式来做到这一点是要在变量中列出porperties并稍后在属性的代码中检查该变量,如所以
class Weapon:
def __init__(self, finesse, light, thrown, two_handed, versatile):
property_list = [finesse, light, thrown, two_handed, versatile]
self.properties = []
for prop in property_list:
if prop != 0:
self.properties.append(prop)
但是,我仍然希望看到我原来的问题可能是如何回答的,因为它仍然可以运行像我原来不排除语句非常有用。
你为什么想'Weapon.finesse'是字符串''finesse''或不存在?岂不是更好吗?比如说,对于匕首来说这是真的,对俱乐部来说是虚假的? – abarnert
想想你将如何使用它。你想尝试:除AttributeError之外的player.weapon.finesse:遍及代码吗? – abarnert
理想情况下,会有多个'Weapon'的子类。 – TigerhawkT3