您现在的位置是:主页 > news > 加盟网站分页怎么做seo/网络宣传怎么做
加盟网站分页怎么做seo/网络宣传怎么做
admin2025/5/2 20:22:02【news】
简介加盟网站分页怎么做seo,网络宣传怎么做,wordpress添加独立表单页面,湘潭今日头条新闻您的问题是因为您在基本抽象类中定义了前面带有__(双下划线)的抽象方法。这导致python在定义类时执行name mangling。函数名从__json_builder更改为_Base__json_builder,或者从__xml_builder更改为_Base__xml_builder。这是您必须在子类中实现/覆盖的名称。要在示例…
您的问题是因为您在基本抽象类中定义了前面带有__(双下划线)的抽象方法。这导致python在定义类时执行name mangling。
函数名从__json_builder更改为_Base__json_builder,或者从__xml_builder更改为_Base__xml_builder。这是您必须在子类中实现/覆盖的名称。
要在示例中显示此行为->>> import abc
>>> import six
>>> @six.add_metaclass(abc.ABCMeta)
... class Base(object):
... @abc.abstractmethod
... def __whatever(self):
... raise NotImplementedError
...
>>> class SubClass(Base):
... def __init__(self):
... super(Base, self).__init__()
... self.__whatever()
... def __whatever(self):
... print("whatever")
...
>>> a = SubClass()
Traceback (most recent call last):
File "", line 1, in
TypeError: Can't instantiate abstract class SubClass with abstract methods _Base__whatever
当我将实现更改为以下内容时,它将工作>>> class SubClass(Base):
... def __init__(self):
... super(Base, self).__init__()
... self._Base__whatever()
... def _Base__whatever(self):
... print("whatever")
...
>>> a = SubClass()
whatever
但这是非常乏味的,如果您真的想用__(双下划线)定义函数,您可能需要考虑一下。您可以阅读有关名称损坏的更多信息here。