Skip to main content
 首页 » 编程设计

python之最接近 python 中的虚拟调用

2025年05月04日10del

Python 不提供一些内置的继承机制来从基方法调用派生类中的基虚方法或抽象方法的实现

我想知道 python 中最接近提供以下结构的东西是什么:

class Base(?): 
   def some_abstract_interface(self, **params): 
     raise Unimplemented() 
   def some_base_impl(self): 
     self.some_abstract_interface(self, a=4, b=3, c=2) 
 
 
class Derived(Base): 
 
   @neat_override_decorator_here?  
   def some_abstract_interface(self, **params): 
     print("actual logic here {0}".format(params)) 
 
d = Derived() 
d.some_base_impl() 
>>>output: actual logic here a=4, b=3, c=2 

请您参考如下方法:

你已经可以在没有任何整洁装饰器的情况下做到这一点:

class Base: 
    def some_abstract_interface(self): 
        raise NotImplemented 
 
    def some_base_impl(self): 
        self.some_abstract_interface() 
 
class Derived(Base): 
    def some_abstract_interface(self): 
        print('actual logic here') 
 
Derived().some_base_impl() 

这个输出:

actual logic here 

如果你想强制执行Base是一个抽象类,不能用来直接实例化一个对象,那some_abstract_interface意味着是一个抽象方法,并且总是必须被子类方法的实现覆盖,您可以使基类继承自 ABC abc 的类别用 abc.abstractmethod 模块和修饰抽象方法像这样:

import abc 
 
class Base(abc.ABC): 
    @abc.abstractmethod 
    def some_abstract_interface(self): 
        raise NotImplemented 
 
    def some_base_impl(self): 
        self.some_abstract_interface() 
 
class Derived(Base): 
    def some_abstract_interface(self): 
        print('actual logic here') 
 
Derived().some_base_impl()