为了账号安全,请及时绑定邮箱和手机立即绑定

这样写为什么出错

这样写为什么出错了

http://img1.sycdn.imooc.com//5793038700018ff408780325.jpg

正在回答

1 回答

class myclass(object):
	def __init__(self, name):
		self.name = name

class yourclass(object):
	def __init__(self, age):
		self.age = age

class A(myclass, yourclass):
	def __init__(self, name, age):
		myclass.__init__(self, name)
		yourclass.__init__(self, age)

a = A('ze', 18)
print a.name
print a.age

用super来找父类的时候,会遵循一定的顺序,经典的是从左至右,深度搜索,所以在例子里永远都是找到了myclass里的init方法。建议用上面的 ClassName.__init__(self, args)。。下面的也可以:

class myclass(object):
	def __init__(self, name):
		self.name = name

class yourclass(object):
	def __init__(self, age):
		self.age = age

class A(myclass, yourclass):
	def __init__(self, name, age):
		super(A, self).__init__(name)
		yourclass.__init__(self, age)

a = A('ze', 18)
print a.name
print a.age


2 回复 有任何疑惑可以回复我~
#1

今天是晴天 提问者

非常感谢!
2016-07-24 回复 有任何疑惑可以回复我~
#2

慕粉3631940

class A(myclass, yourclass): def __init__(self, name, age): super(A, self).__init__(name) super(A, self).__init__(age) a = A('ze', 18) print a.name print a.age 测试了一下,上述代码也是可以实现,使用super()函数
2017-06-30 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

这样写为什么出错

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信