验证对象实例是否符合Python中的ABC
我有一个API,它接收我期望符合特定接口(在开发时已知)的对象的序列化表示。我收到的序列化数据包括用于创建此接口的方法/属性的实现的详细信息,因此实际对象在运行时构造;但是,方法名、签名、属性类型等都应该与开发时从接口中已知的匹配。我希望能够在运行时构造这个对象,然后验证接口的一致性,最好在构造了无效对象后立即失败,而不仅仅是在我试图调用不存在的方法时 我是Python新手,所以我不确定是否有一种惯用的方法来进行这样的检查。我已经研究过使用抽象基类,并用这样的类注释我构造的对象。在开发期间使用注释很方便,因为我可以在VSCode中获得intellisense,但它们不用于验证我构造的对象在运行时是否正确实现了ABC-例如,当它作为参数传递到方法中时,如下所示:验证对象实例是否符合Python中的ABC,python,python-3.x,typechecking,abc,Python,Python 3.x,Typechecking,Abc,我有一个API,它接收我期望符合特定接口(在开发时已知)的对象的序列化表示。我收到的序列化数据包括用于创建此接口的方法/属性的实现的详细信息,因此实际对象在运行时构造;但是,方法名、签名、属性类型等都应该与开发时从接口中已知的匹配。我希望能够在运行时构造这个对象,然后验证接口的一致性,最好在构造了无效对象后立即失败,而不仅仅是在我试图调用不存在的方法时 我是Python新手,所以我不确定是否有一种惯用的方法来进行这样的检查。我已经研究过使用抽象基类,并用这样的类注释我构造的对象。在开发期间使用注
def my_method(self, generated_object: MyABC):
有没有其他方法来实现我所描述的(强制转换到ABC,或者使用不同的语言功能)?或者,我最好实现自己的验证器,将构造对象上的方法/属性与ABC上的方法/属性进行比较
import abc
class Base(abc.ABC):
@abc.abstractmethod
def i_require_this(self):
pass
class Concrete(Base):
def __init__(self):
return
concrete = Concrete()
TypeError:无法使用我需要的抽象方法实例化抽象类混凝土