class Email():
def __init__(self, store_number):
self.store_number = store_number
def amethod(self):
pass
将变量从子类传递给父类的正确方法是什么? 我应该这样做:
class MoreSpecificEmail():
def __init__(self, store_number):
Email.__init__(self, store_number=store_number)
def another_method(self):
pass
或:
class MoreSpecificEmail():
def __init__(self, store_number):
self.store_number = store_number
Email.__init__(self, store_number=self.store_number)
我刚刚在每个子类中使用store_number
的不同缩写来帮助澄清我脑子里正在发生的事情。不过,我确信这是错误的方式。
答案 0 :(得分:4)
您目前拥有的不是继承;你的类都没有实际上继承自任何东西!首先,Email
应该是“新式类”,继承自object
:
class Email(object):
# ^ note inheritance from object
def __init__(self, store_number):
self.store_number = store_number
def amethod(self):
pass
然后MoreSpecificEmail
应该从Email
继承 - 因为它没有任何其他实例化参数,它只能使用继承的__init__
而不需要定义它自己的:
class MoreSpecificEmail(Email):
# ^ note inheritance from Email
# note no need to define __init__
def another_method(self):
pass
有关 其他__init__
参数的示例,请注意您应使用super
并依赖超类的__init__
来分配所需的参数 - 您只需要指定超类处理不的属性:
class MoreSpecificEmail(Email):
def __init__(self, store_number, something_else):
super(MoreSpecificEmail, self).__init__(store_number)
# ^ pass it straight on
self.something_else = something_else
def another_method(self):
pass
有关详细信息,请参阅the Python class tutorial。