1se*_*anr 9 python abc python-3.x
我想知道在使用抽象方法创建抽象类时是否可能,如果它可以允许派生类中的那些方法的实现为每个函数提供不同数量的参数.
我目前有抽象课
from abc import ABCMeta, abstractmethod
class View(metaclass=ABCMeta):
@abstractmethod
def set(self):
pass
@abstractmethod
def get(self):
pass
Run Code Online (Sandbox Code Playgroud)
但是我希望能够在一个类中实现它,set有1个参数并且得到2(set(param1)和get(param1, param2)),然后在另一个类中也继承它但是有0个参数set,2个用于get
(set()和get(param1, param2)).
这是可能的,如果是这样,我将如何去做
Mar*_*ers 18
没有检查具体实现有多少参数.所以没有什么可以阻止你做这件事.
只需定义这些方法即可接受您需要接受的任何参数:
class View(metaclass=ABCMeta):
@abstractmethod
def set(self):
pass
@abstractmethod
def get(self):
pass
class ConcreteView1(View):
def set(self, param1):
# implemenation
def get(self, param1, param2):
# implemenation
class ConcreteView2(View):
def set(self):
# implemenation
def get(self, param1, param2):
# implemenation
Run Code Online (Sandbox Code Playgroud)
蟒蛇3.8
from abc import ABC, abstractmethod
class SomeAbstractClass(ABC):
@abstractmethod
def get(self, *args, **kwargs):
"""
Returns smth
"""
@abstractmethod
def set(self, key, value):
"""
Sets smth
"""
class Implementation(SomeAbstractClass):
def set(self, key, value):
pass
def get(self, some_var, another_one):
pass
Run Code Online (Sandbox Code Playgroud)
完美运行,没有警告,没有问题
| 归档时间: |
|
| 查看次数: |
5134 次 |
| 最近记录: |