Python 具有自己的 __init__ 函数的抽象方法
Python Abstract Method With It's own __init__ function
如何在基础和派生抽象 class 中定义一个 __init__
函数,并使所有 self.*
在抽象方法中可用?例如:
使用在抽象 class 的基 class 中导入的函数的正确方法是什么?例如:在 base.py 我有以下内容:
import abc
class BasePizza(object):
__metaclass__ = abc.ABCMeta
def __init__(self):
self.firstname = "My Name"
@abc.abstractmethod
def get_ingredients(self):
"""Returns the ingredient list."""
然后我在diet.py中定义方法:
import base
class DietPizza(base.BasePizza):
def __init__(self):
self.lastname = "Last Name"
@staticmethod
def get_ingredients():
if functions.istrue():
return True
else:
return False
然而,当我 运行 diet.py
时,我只能访问 self.lastname
。我希望 DietPizza
同时具有 self.firstname
和 self.lastname
。我该怎么做?
你的BasePizza.__init__
是一个具体的方法;只需使用 super()
:
调用它
class DietPizza(BasePizza):
def __init__(self):
super().__init__()
self.lastname = "Last Name"
如何在基础和派生抽象 class 中定义一个 __init__
函数,并使所有 self.*
在抽象方法中可用?例如:
使用在抽象 class 的基 class 中导入的函数的正确方法是什么?例如:在 base.py 我有以下内容:
import abc
class BasePizza(object):
__metaclass__ = abc.ABCMeta
def __init__(self):
self.firstname = "My Name"
@abc.abstractmethod
def get_ingredients(self):
"""Returns the ingredient list."""
然后我在diet.py中定义方法:
import base
class DietPizza(base.BasePizza):
def __init__(self):
self.lastname = "Last Name"
@staticmethod
def get_ingredients():
if functions.istrue():
return True
else:
return False
然而,当我 运行 diet.py
时,我只能访问 self.lastname
。我希望 DietPizza
同时具有 self.firstname
和 self.lastname
。我该怎么做?
你的BasePizza.__init__
是一个具体的方法;只需使用 super()
:
class DietPizza(BasePizza):
def __init__(self):
super().__init__()
self.lastname = "Last Name"