所以我有这样的Python 3代码:
from abc import ABC, abstractmethod
from datetime import datetime
class IfaceA(ABC):
@abstractmethod
def pass_data(self, data: str):
pass
class IfaceB(ABC):
@abstractmethod
def pass_data(self, data: datetime):
pass
class MyClass(IfaceA, IfaceB):
def pass_data(self, data: str):
print("str", data)
def pass_data(self, data: datetime):
print("datetime", data)
def main():
c = MyClass()
c.pass_data("Any string.")
c.pass_data(datetime.now())
if __name__ == "__main__":
main()
它给了我这样的输出:
datetime Any string.
datetime 2020-07-13 02:00:34.676715
不使用带有str参数的IfaceA.pass_data方法。
有没有办法使它像C ++一样工作?
你可以使用多种方法
from abc import ABC, abstractmethod
from datetime import datetime
from multimethod import multimethod
class IfaceA(ABC):
@abstractmethod
def pass_data(self, data: str):
pass
class IfaceB(ABC):
@abstractmethod
def pass_data(self, data: datetime):
pass
class MyClass(IfaceA, IfaceB):
@multimethod
def pass_data(self, data: str):
print("str", data)
@multimethod
def pass_data(self, data: datetime):
print("datetime", data)
def main():
c = MyClass()
c.pass_data("Any string.")
c.pass_data(datetime.now())
if __name__ == "__main__":
main()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句