使用PyCharm IDE。 我想将2个抽象类A + B继承到1个新类C.我想实现其中一个类'方法并使用其他类'方法,这些方法在后面的类E中实现,在A中实现A的实现。
我的问题是:在创建C类时,intelliJ希望我实现所有方法,所以A类的方法和B类的方法。我只想实现A类方法,但需要B类的“接口”才能知道哪些方法可供我使用。有没有办法告诉intelliJ我不想在新类中实现某个类abstractmethods?
甚至 - 有没有办法以更好的方式完成所有这些?
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()
答案 0 :(得分:0)
正如所写,您的班级C
仍然是抽象的,因为它没有实现A
的抽象方法 - 所以它应该被标记为:
class C(A, B, metaclass=ABCMeta):
# 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")