gpt4 book ai didi

python - 在 Python 中使用 super() 关键字的单继承的基本示例是什么?

转载 作者:IT老高 更新时间:2023-10-28 22:14:21 26 4
gpt4 key购买 nike

假设我设置了以下类:

class Foo:
def __init__(self, frob, frotz):
self.frobnicate = frob
self.frotz = frotz
class Bar:
def __init__(self, frob, frizzle):
self.frobnicate = frob
self.frotz = 34
self.frazzle = frizzle

我如何(如果可以的话)在这种情况下使用 super() 来消除重复代码?

最佳答案

假设您希望类 Bar 在其构造函数中设置值 34,这将起作用:

class Foo(object):
def __init__(self, frob, frotz):
self.frobnicate = frob
self.frotz = frotz

class Bar(Foo):
def __init__(self, frob, frizzle):
super(Bar, self).__init__(frob, frizzle)
self.frotz = 34
self.frazzle = frizzle


bar = Bar(1,2)
print "frobnicate:", bar.frobnicate
print "frotz:", bar.frotz
print "frazzle:", bar.frazzle

然而,super 引入了它自己的复杂性。参见例如super considered harmful .为了完整起见,这里是没有 super 的等效版本。

class Foo(object):
def __init__(self, frob, frotz):
self.frobnicate = frob
self.frotz = frotz

class Bar(Foo):
def __init__(self, frob, frizzle):
Foo.__init__(self, frob, frizzle)
self.frotz = 34
self.frazzle = frizzle


bar = Bar(1,2)
print "frobnicate:", bar.frobnicate
print "frotz:", bar.frotz
print "frazzle:", bar.frazzle

关于python - 在 Python 中使用 super() 关键字的单继承的基本示例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1173992/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com