我希望能够实例化一个对象并与其进行交互,而无需知道该对象在开始时将是哪种特定类型。基本上,我希望对象具有配置文件中指定的属性,然后使用统一的句柄与之交互。
在下面的示例中,我试图确定是否需要使用Python继承或嵌套/内部类。
例如,我想执行以下操作
config.animal_type = 'Squirrel'
a = Animal()
a.walk()
I'm walking on 4 legs!
config.animal_type = 'Monkey'
b = Animal()
b.walk()
I'm walking on 2 legs!
类结构与下面的结构类似,但是我将使用config.animal_type变量来确定a
和b
的类型。
class Animal:
def __init__(self)
...
def walk(self)
...
def eat(self)
...
class Squirrel(Animal):
def walk(self):
self.walk_on_4_legs()
super().walk()
def walk_on_4_legs(self):
print("I'm walking on 4 legs!")
class Monkey(Animal):
def walk(self):
self.walk_on_2_legs()
super(Monkey,self).walk()
def walk_on_2_legs(self):
print("I'm walking on 2 legs!")
或者,我也一直在研究使用嵌套/内部类,其中我只会在Squirrel
类中定义Monkey
和Animal
类,然后仅基于在配置变量上。唯一的一件事是,我读到嵌套/内部类不建议作为最佳实践。
我希望澄清实现该功能的最佳方法。