gpt4 book ai didi

python - Python 中带有额外参数的父方法

转载 作者:太空宇宙 更新时间:2023-11-04 00:22:02 25 4
gpt4 key购买 nike

父类 有一个称为“反序列化”的属性,它是静态和抽象的,只有一个参数。每个子类 都实现了该方法。现在我的情况是 Child 类需要多个参数。当我将 options=None 添加到父类时,子类提示它们具有不同的签名(警告)。我必须向每个类添加 options=None。那就是重构。我想知道我是否可以忽略警告并继续,或者有更好的解决方案?还是我必须重构?

class Serializable:
__metaclass__ = ABCMeta

@staticmethod
@abstractmethod
def deserialize(json_obj, options=None):
pass

class ChildWithNoExtraArguments(Serializable):

# warning is here...
@staticmethod
def deserialize(json_obj):
# some implementation

class ChildWithExtraArgumnets(Serializable):

@staticmethod
def deserialize(json_obj, options):
# some implementation, I need options

最佳答案

您还需要使用 @staticmethod 装饰您的子类 deserialize 实现。您看到的异常是因为 python 自动将 self 添加到每个方法调用中。然后用 @staticmethod 装饰停止这种行为。

此外,您的第二个实现需要将选项定义为关键字参数。关键字参数具有默认值,例如:options=None

class Serializable:
__metaclass__ = ABCMeta

@staticmethod
@abstractmethod
def deserialize(json_obj, options=None):
pass

class ChildWithNoExtraArguments(Serializable):

# warning is here...
@staticmethod
def deserialize(json_obj, options=None):
# some implementation

class ChildWithExtraArgumnets(Serializable):

@staticmethod
def deserialize(json_obj, options=None):
# some implementation, I need options

关于python - Python 中带有额外参数的父方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48789745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com