我对 python 2.7 有一个简单的疑问:
我创建了一个抽象基类和一个子类:
from abc import ABCMeta, abstractmethod
class Base:
"""
Abstract base class for all entities.
"""
__metaclass__ = ABCMeta
def __init__(self, name):
self.name = name
def send_data(self):
self.send_data()
class Child (Base):
def __init__(self, name):
super(Child, self).__init__(name=name)
当创建子类的对象并调用 send_method 时,我收到以下错误,这是预期的行为:
sample = Child('test')
sample.send_data()
# …
RuntimeError: maximum recursion depth exceeded
但是,当在基类中传递 send_method 引用并通过创建子类对象调用 send_method 时,我认为预期的行为是接收AttributeError
但我很惊讶地发现没有生成错误。请解释。
from abc import ABCMeta, abstractmethod
class Base:
"""
Abstract base class for all entities.
"""
__metaclass__ = ABCMeta
def __init__(self, name, parent):
self.name = name
self.parent = parent
def send_data(self):
self.send_data
sample = Child('test')
sample.send_data()
# No error