cod*_*ash 2 python abstract-class abc abstract python-3.x
我正在尝试下面的python代码:
from abc import ABCMeta, abstractmethod
class Bar:
__metaclass__ = ABCMeta
@abstractmethod
def foo(self):
pass
class Bar2(Bar):
def foo2(self):
print("Foo2")
b = Bar()
b2 = Bar2()
Run Code Online (Sandbox Code Playgroud)
我认为@abstractmethod
确保我的父类是抽象的,子类也是抽象的,因为它没有实现抽象方法.但是在这里,我没有尝试实例化这两个类的错误.
有谁能解释为什么?
您必须将类的元类设置Bar
为ABCMeta
.
Python 2:
class Bar:
__metaclass__ = ABCMeta
@abstractmethod
def foo(self):
pass
Run Code Online (Sandbox Code Playgroud)
Python 3:
class Bar(object, metaclass=ABCMeta):
@abstractmethod
def foo(self):
pass
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
870 次 |
最近记录: |