Вот как используется мой класс Characters
.
Консоль Python:
>>> chars = Characters()
>>> chars.add(Character("Link", "Zelda"))
>>> chars.add(Enemy("Goomba", "SMB"))
>>> chars.add(Enemy("Koopa", "SMB"))
>>> chars.games()
['Zelda' 'SMB']
>>> chars.characters("SMB")
['Koopa', 'Goomba']
Как заставить str (символы) возвращать следующее:
"Zelda:
Link from Zelda
SMB:
The Fearsome Koopa from SMB
The Fearsome Goomba from SMB"
Код моей попытки:
class Character(object):
def __init__(self, name, game):
self.name = name
self.game = game
def __str__(self):
return "{0} from {1}".format(self.name, self.game)
def __repr__(self):
return "Character('{0}','{1}')".format(self.name, self.game)
class Enemy(Character):
def __str__(self):
return "The Fearsome {0} from {1}".format(self.name, self.game)
class Characters():
def __init__(self):
self.g = []
self.c = {}
self.p = {}
def games(self):
return (self.g)
def characters(self, char_name):
if char_name not in self.c:
return []
return self.c[char_name]
def __str__(self):
s = ""
if not self.p:
return s
for x in self.p:
s+=x+":"
for y in self.p[x]:
s+=" "+y+" "
return s
def add(self, obj):
if not obj.game in self.g:
self.g.append(obj.game)
if not obj.game in self.c:
self.c[obj.game] = [obj.name]
self.p[obj.game] = [str(obj)]
else:
self.c[obj.game] += [obj.name]
self.p[obj.game] += [str(obj)]