【发布时间】:2017-01-24 09:59:37
【问题描述】:
使用 PyCharm IDE。 我想将 2 个抽象类 A+B 继承到 1 个新类 C 中。我想实现一个类的方法并使用另一个类的方法,该方法在稍后的类 E 中实现,使用 A 在 D 中的实现。
我的问题是:在创建C类时,intelliJ要我实现所有方法,所以A类的方法和B类的方法。我只想实现 A 类方法,但需要 B 类的“接口”来知道哪些方法可供我使用。有没有办法告诉 intelliJ 我不想在新类中实现某些类的抽象方法?
甚至 - 有没有办法以更好的方式完成所有这些工作?
class A(metaclass=ABCMeta):
"""interface class"""
@abstractmethod
def click(self, c): pass
class B(metaclass=ABCMeta):
"""interface class"""
@abstractmethod
def do_something(self): pass
class C(A, B):
# implement methods of B here, use abstract methods of A
# as interface to know what methods are available for use
def do_something(self):
self.click("anything")
class D(A):
# implement A
def click(self, c):
print("I clicked {}".format(c))
class E(C,D):
# merge implementations to create runnable `do_something()`
def main():
self.do_something()
E.main()
【问题讨论】:
-
您可以简单地禁止检查:
# noinspection PyAbstractClass
标签: python inheritance intellij-idea pycharm multiple-inheritance