请问为什么一直报错
来源:2-7 编程练习
困了就睡_520
2019-06-10 00:06:46
class People(object):
# 重写People类的构造方法,并将参数n、a赋值给实例属性name、age
def __init__(self,n,a):
self.n = n
self.a = a
# 自定义实例方法speak(),实现格式化输出
def speak(self):
print("{0}说:我{1}岁".format(self.n,self.a))
class Speaker(object):
# 重写Speaker类的构造方法,并将参数n、c、t赋值给实例属性name、career、topic
def __init__(self,n,c,t):
self.n = n
self.c = c
self.t = t
# 自定义实例方法speak(),实现格式化输出
def speak(self):
print("我叫{0},我是一个{1},我演讲的主题是{2}".format(self.n,self.c,self.t))
class Student(People,Speaker):
def __init__(self,n,c,t):
Speaker.__init__(n,c,t)
pass
s = Student('Jonh', '演说家', 'Python')
# s对象调用父类的speak( )方法
s.speak()
# 格式化打印Student是否为Speaker的子类
r = isinstance(Student,Speaker)
print("Student是否为Speaker的子类:",r)
# 格式化打印Student是否为People的子类
t = isinstance(Student,People)
print("Student是否为People的子类:",t)
2回答
困了就睡_520
提问者
2019-06-10
class People(object):
# 重写People类的构造方法,并将参数n、a赋值给实例属性name、age
def __init__(self,n,a):
self.n = n
self.a = a
# 自定义实例方法speak(),实现格式化输出
def speak(self):
print("{0}说:我{1}岁".format(self.n, self.a))
class Speaker(object):
# 重写Speaker类的构造方法,并将参数n、c、t赋值给实例属性name、career、topic
def __init__(self,n,c,t):
self.n = n
self.c = c
self.t = t
# 自定义实例方法speak(),实现格式化输出
def speak(self):
print("我叫{0},我是一个{1},我演讲的主题是{2}".format(self.n,self.c,self.t))
class Student(Speaker,People):
def __init__(self,n,c,t):
Speaker.__init__(self,n,c,t)
pass
s = Student('Jonh', '演说家', 'Python')
# s对象调用父类的speak( )方法
s.speak()
# 格式化打印Student是否为Speaker的子类
r = issubclass(Student,Speaker)
print("Student是否为Speaker的子类:",r)
# 格式化打印Student是否为People的子类
t = issubclass(Student,People)
print("Student是否为People的子类:",t)
时间,
2019-06-10
同学,你好,同学在回答中的写法是正确的。同学需要注意以下两点:
一、在继承多个父类时要注意继承顺序;例:class Student(Speaker,People):Speaker类中有的话会直接调用该类中的方法。
二、子类调用父类有三种方法:
1、父类名.父类方法(self):Speaker.__init__(self,n,c,t)
2、super(子类名,self).父类方法():python2和python3中都可以使用,如果需要参数,则需要传参。
3、super().父类方法():仅在python3中使用,子类名和self是可以不写的
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~