0
所以我最近對類的繼承有了一個瞭解,並開始意識到它們的用途。於是我開始爲自己編寫一個具體的例子。具有類繼承性的Python元類
我意識到,當我爲不同的武器製作多個類時,如果我有一個爲我生成這些類的類,會更容易。我有點卡在如何完成這件事。
我有搜索,它變得混亂和理論快速。這個網站上的例子(http://en.wikibooks.org/wiki/Python_Programming/Metaclasses)在「Class Factories」下似乎是我需要的,但我似乎錯過了一些東西。
這是我有:
class item(object):
def __init__(self, item_name, item_type):
self.item_type = item_type
self.item_name = item_name
def get_item_name(self):
return self.item_name
def get_item_type(self):
return self.item_type
def __str0__(self):
return "%s is a %s" % (self.item_name, self.item_type)
class weapon(item):
def __init__(self, name, weapon_type, dmg_mod, atk_typ):
item.__init__(self, name, "weapon")
self.name = name
self.weapon_type = weapon_type
self.dmg_mod = dmg_mod
self.atk_typ = atk_typ
def get_wpn_type(self):
return self.weapon_type
def get_dmg_mod(self):
return self.dmg_mod
def get_atk_typ(self):
return atk_typ
def __str1__(self):
return "%s is a %s with %s type damage at a %i modifier" % (self.name,
self.weapon_type,
self.atk_typ,
self.dmg_mod)
def weapon_fact(weptype, dmg_type):
class weptype(weapon):
def __init__(self, name, dmg_mod):
weapon.__init__(self, name, weptype, dmg_mod, dam_type)
self.name = name
當我做
longbow = weapon_fact("Long Bow", "Pierce")
huntersbow = longbow("Hunter's Bow", 5)
我得到這個回溯
Traceback (most recent call last):
File "<pyshell#1>", line 1, in <module>
huntersbow = longbow("Hunter's Bow", 5)
TypeError: 'NoneType' object is not callable
,當我嘗試打電話給長弓已經沒有分配給它。