请问为什么一直报错

来源: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)

1

时间,

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是可以不写的

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

0

0 学习 · 8160 问题

查看课程