Discuss / Python / 子类只能继承父类的方法

子类只能继承父类的方法

Topic source

并不能继承父类的属性。 class Student(object): def __init(self, name, score, age): self.name = name self.\score = score self.__age = age

def print_imformation(self):
    print ('name is %s, score is %s, age is %s' % (self.name, self.__score, self.__age))

class Couple(Student): def __init(self, name): self.\name = name def print_imformation(self): print ('name is %s' % self.__name)

Zhang = Student('Zhangliangcheng', 80, 22) Yma = Couple('Yma') Yma.print_imformation()

子类的属性应该是要自己重新定义。

廖雪峰

#2 Created at ... [Delete] [Delete and Lock User]

那是因为你忘了在子类的__init__中调用父类的__init__

class Student(object): def __init__(self, name, score, age): self.name = name self.score = score self.age = age

def print_imformation(self):
    print ('name is %s, score is %s, age is %s' % (self.name, self.score, self.age))

class Couple(Student): def _init_(self, name, score, age, sex): Student.__init__(self, name, score, age) self.sex = sex def print_imformation(self): print ('name is %s, score is %s, age is %s, sex is % s' % (self.name, self.score, self.age, self.sex))

Zhang = Student('Zhangliangcheng', 80, 22) Yong = Student('Yonglinan', 72, 19) Lu = Student('Luxiaofeng', 90, 21) Yma = Couple('Yma', 80, 40, 'male') Yma.print_imformation()

这样修改就可以让子类直接继承父类的属性了。

Traceback (most recent call last): File "17.py", line 20, in <module> Yma = Couple('yma', 80, 40, 'male') TypeError: init() takes 4 positional arguments but 5 were given

明明只有四个参数啊,怎么说传了5个?

还有一个self默认传入的。

Yma = Couple('yma', 80, 40, 'male')

TypeError: init() takes 4 positional arguments but 5 were given

这个错你改了吗 求助楼上 万分感谢

你们应该是直接复制的我的代码?这里面复制出来Couple的init左右只有一条下划线,需要自己再加。

Mr_RightMen

#8 Created at ... [Delete] [Delete and Lock User]

可以继承的,加个super试试呢,哈哈

class Student(object): def init(self, name, score, age): self.name = name self.score = score self.age = age

def print_imformation(self): print ('name is %s, score is %s, age is %s' % (self.name, self.score, self.age)) class Couple(Student): def init(self, name, score, age, sex): Student.init(self, name, score, age) self.sex = sex def print_imformation(self): print ('name is %s, score is %s, age is %s, sex is % s' % (self.name, self.score, self.age, self.sex))

Zhang = Student('Zhangliangcheng', 80, 22) Yong = Student('Yonglinan', 72, 19) Lu = Student('Luxiaofeng', 90, 21) Yma = Couple('Yma', 80, 40, 'male') Zhang.print_imformation() 为何加上最后一行,就执行不了?想调用Zhang,Yong,Lu的信息都失败,请大神指点!

Zhang.print_imformation() Zhang是父类的实例。并不是子类Couple的实例。
而print_imformation()是子类Couple的一个方法,Zhang是调用不了的。除非你在前面改为Zhang = Couple('Zhangliangcheng', 80, 22,'male'),再调用Zhang.print_imformation()就没问题。


  • 1
  • 2

Reply