我有一个父类,这是一系列工具的初步要求
class Tools():
def __init__(self, name, age):
self.name = name
self.age = age
class Func_a(Tools):
def __init__(self, name, age, sex):
super().__init__(name, age)
self.sex = sex
def _func_a(self):
print(self.name)
class Func_b(Tools):
def __init__(self, name, age, sex):
super().__init__(name, age)
self.sex = sex
def _func_b(self):
print(self.name)
然后,根据一些先决条件,我使用一个映射调用一个或另一个函数
CLASS_MAP = {
"func_a":Func_a("name1", 25, "m"),
"func_b":Func_b("name2", 100, "F")
}
然后看看发生了什么:
first_class = CLASS_MAP["func_a"]
second_class = CLASS_MAP["func_b"]
print(first_class.name)
print(second_class.name)
我的问题是,我有没有办法在不实际调用类和实例化对象的情况下指向dict中的特定类
根据某些约束条件,我必须调用其中一个类(例如Func_a、Func_b。。。Func_f)[共6个子类]
我使用了一堆if-else语句来实现,但是这非常混乱,而且两个语句之间有很多代码是冗余的
如果我的映射可以指向正确的类,但不能实际调用它,那将是理想的。因为当前即使我删除了second_class = CLASS_MAP["func_b"]
,仍然会从映射中调用func_b
,如果我错了,请纠正我
一种可能的方式:
其中
a = lambda: x
基本上是另见关于lambda的文件
因此,映射的值是函数对象,在应用调用运算符
()
之前,这些对象被存储但不会执行相关问题 更多 >
编程相关推荐