你好吗?
我没有完全面临问题,但我想改进代码,但不知道如何改进。 “问题”是:
我有一个家长班:
class Utils:
@staticmethod
def jsonFromDict(className, dict):
# code logic here
return className(**finalValue)
然后我有一堆数据类,例如:
@dataclass
class payloadA(Utils):
x: str = ''
y: str = ''
z: str = ''
我想将类名传递给 jsonFromDict 而无需重复类名。今天我就是这样做的:
payloadA.jsonFromDict(payloadA, dict)
payloadB.jsonFromDict(payloadB, dict)
payloadC.jsonFromDict(payloadC, dict)
我不想覆盖或重复每个有效负载类中的实现,但我找不到将类名从我调用父级方法的实例传递到父级方法的方法。
有什么办法可以做到这一点吗?
我尝试在每个类中重写,但我想保持干燥
您可以使用
self.__class__.__name__
,因为 self 的类型是子类,即使该方法仅在父类中声明。
示例:
class Father:
def foo(self):
print(self.__class__.__name__)
class Son(Father):
def __init__(self):
self.foo()
son = Son()
打印
Son
。