<p>正如@Barmar所建议的,您可以创建一个从名称映射到实例的字典。这将使查找相应实例的速度非常快,并检查其名称是否在字典中</p>
<p>这里有一个这样做的例子。字典名为<code>players</code>。注意,它将玩家姓氏的<em>小写</em>版本映射到每个<code>Player</code>实例(并在处理之前将用户的输入转换为小写)</p>
<pre><code>print('Hello, welcome')
class ManCity:
def __init__(self, name, age, position):
self.name = name
self.age = age
self.position = position
def getName(self):
print(self.name)
def getAge(self):
print(self.age)
def getPosition(self):
print(self.position)
def __repr__(self):
return f'{type(self).__name__}({self.name!r}, {self.age}, {self.position})'
# Create dictionary mapping players to their lowercase last name.
players = {}
for player in (ManCity('Sergio Aguero', 32, 'Striker'),
ManCity('Raheem Sterling', 27, 'Winger'),
ManCity('Gabriel Jesus', 24,'Striker'),
ManCity('Ruben Dias', 29, 'Centre Back'),
ManCity('John Stones', 26, 'Centre Back'),
ManCity('Ederson', 29, 'GoalKeeper')):
players[ player.name.split()[-1].lower() ] = player
while True:
chosenName = input('Choose Player: ').lower()
if chosenName.strip() == '':
break # Quit loop.
if chosenName in players:
print('Player info:', players[chosenName])
else:
print('Unknown name, try again')
</code></pre>
<p>使用示例:</p>
<pre><code>Hello, welcome
Choose Player: Ederson
Player info: ManCity('Ederson', 29, GoalKeeper)
Choose Player: dias
Player info: ManCity('Ruben Dias', 29, Centre Back)
Choose Player:
</code></pre>