将子类名称作为继承类方法的参数传递

问题描述 投票:0回答:1

你好吗?

我没有完全面临问题,但我想改进代码,但不知道如何改进。 “问题”是:

我有一个家长班:

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)

我不想覆盖或重复每个有效负载类中的实现,但我找不到将类名从我调用父级方法的实例传递到父级方法的方法。

有什么办法可以做到这一点吗?

我尝试在每个类中重写,但我想保持干燥

python class oop inheritance methods
1个回答
0
投票

您可以使用

self.__class__.__name__
,因为 self 的类型是子类,即使该方法仅在父类中声明。

示例:

class Father:

    def foo(self):
        print(self.__class__.__name__)

class Son(Father):

    def __init__(self):
        self.foo()

son = Son()

打印

Son

© www.soinside.com 2019 - 2024. All rights reserved.