有一个基类warrior和其五个派生类lion wolf ninja icrman dragon,现在根据所需要的武士,如何既能保存其位置信息,又能保存其是哪种武士,并且在以后能调用这种武士
时间: 2024-02-16 11:05:29 浏览: 81
详解C++中基类与派生类的转换以及虚基类
你可以考虑使用面向对象编程中的继承和多态的特性来实现这个需求。具体来说,你可以将每个派生类实例化为该类的对象,并将对象存储在一个容器(如列表、字典等)中,这样就能保存每个派生类对象的位置和类型信息。当需要调用某种类型的武士时,只需要根据其类型从容器中获取相应的对象即可。下面是一些示例代码:
```python
class Warrior:
def __init__(self, name):
self.name = name
class Lion(Warrior):
def __init__(self, name):
super().__init__(name)
class Wolf(Warrior):
def __init__(self, name):
super().__init__(name)
class Ninja(Warrior):
def __init__(self, name):
super().__init__(name)
class Icrman(Warrior):
def __init__(self, name):
super().__init__(name)
class Dragon(Warrior):
def __init__(self, name):
super().__init__(name)
# 创建不同类型的武士对象
lion1 = Lion("lion1")
wolf1 = Wolf("wolf1")
ninja1 = Ninja("ninja1")
icrman1 = Icrman("icrman1")
dragon1 = Dragon("dragon1")
# 将所有武士对象存储在一个列表中
warriors = [lion1, wolf1, ninja1, icrman1, dragon1]
# 调用某种类型的武士对象
for warrior in warriors:
if isinstance(warrior, Lion):
print(warrior.name + " is a lion.")
elif isinstance(warrior, Wolf):
print(warrior.name + " is a wolf.")
elif isinstance(warrior, Ninja):
print(warrior.name + " is a ninja.")
elif isinstance(warrior, Icrman):
print(warrior.name + " is an icrman.")
elif isinstance(warrior, Dragon):
print(warrior.name + " is a dragon.")
```
在上面的示例代码中,我们定义了一个`Warrior`基类和五个派生类,分别是`Lion`、`Wolf`、`Ninja`、`Icrman`和`Dragon`。每个派生类都继承了`Warrior`基类,并重写了`__init__`方法。我们创建了不同类型的武士对象,并将它们存储在一个列表中。在调用某种类型的武士时,我们使用了`isinstance`方法来判断该武士对象的类型,从而输出相应的信息。
阅读全文