Zum Beispiel versuche ich eine gegnerische Klasse für ein einfaches Spiel zu bauen. Jeder Feind, die Spawns hat eine Typ, die es beeinflusst Statistiken, die Felder in der Feind Klasse sind.Wann garantiert eine Klasse eine Unterklasse?
class Enemy:
#Base Stats for all enemies
name = "foo"
current_health = 4
max_health = 4
attack = 0
defense = 0
armor = 0
initiative = 0
initMod = 0
alive = True
Sollte jederTyp eine Unterklasse von Feind wie so .. sein
class goblin(Enemy):
name = goblin;
current_health = 8
max_health = 8
attack = 3
defense = 2
armor = 0
def attack(){
//goblin-specific attack
}
Aber diese Methode bedeutet, dass ich eine Klasse für jeden einzelnen Typ bauen müssten (was wäre mehr als 80 Klassen), oder gibt es einen besseren Weg, es zu tun? Dieser Feind wird randomisiert werden, so dass ich dachte, die Typen auch in einen Wörterbuch genommen werden kann, die die Namen der Typen als Schlüsselwörter verwendet. Obwohl ich mir nicht ganz sicher bin, wie ich das umsetzen könnte.
Mit so vielen möglichen Unterklassen modellieren Sie das Problem wahrscheinlich nicht gut. Zum einen klingt es so, als ob du "is-a" mit "has-a" -Beziehungen verwirrst - und möglicherweise Klassen und Instanzen von Klassen. Die meisten der aufgelisteten Attribute werden wahrscheinlich im Konstruktor der Klasse oder der Unterklasse ('__init __()') initialisiert. Außerdem erhalten alle Definitionen von Klassenmethoden automatisch ein erstes Argument, das normalerweise 'self' heißt und die Instanz der Klasse darstellt. Sie müssten also 'def attack (self):' haben. Außerdem verwendet Python '' '' '' '' Klammern nicht auf diese Weise. – martineau