【发布时间】:2021-11-15 21:49:29
【问题描述】:
当您在 Python 中创建 2 个类时,第二个类是否总是必须是子类或子类?是否可以有两个以对象为参数的类?谢谢!
class Bird(object):
def __init__(self, name):
self.name = name
print("A %s has feathers" % self.name)
class Seagull(object):
def __init__(self):
print("Seagulls can fly")
super().__init__('Seagull')
seagull = Seagull()
这段代码有什么问题?它说 Seagull 是一个继承,所以它的(对象)应该是 Bird……但是为什么呢?
【问题讨论】:
-
问题需要更多细节。很难理解被问到什么
-
所有类都继承自
object,所以在这个意义上它们都是子类。但是你可以有尽可能多的课程。他们不必互相继承。我不确定“将对象作为参数”是什么意思。由于所有对象都追溯到object,因此任何类型的所有参数都以object为根。 -
class Bird(object): def __init__(self, name): self.name = name print("A %s has feathers" % self.name) class Seagull(object): def __init__( self): print("Seagulls can fly") super().__init__('Seagull') seagull = Seagull() 这段代码有什么问题?它说 Seagull 是一个继承,所以它的(对象)应该是 Bird……但是为什么呢?
-
首先在python3中不需要继承
object,它是自动完成的,所以只需将类写成class Bird:和class Seagull:,其次,super()调用父对象,在本例中为object并传递给定的参数(在本例中为字符串),但object不接受任何参数。您想要实现的目标有点令人困惑 -
“它说 Seagull 是一个继承” -- 那是什么意思?如果我运行代码,我会在
super().__init__('Seagull')得到TypeError: object.__init__() takes exactly one argument (the instance to initialize)。您是否在某种代码测试站点中运行它?请提供minimal reproducible example,包括预期输出和实际输出。顺便说一句,欢迎来到 Stack Overflow!请收下tour 并阅读How to Ask。