【发布时间】:2013-12-07 22:57:13
【问题描述】:
我正在学习 Python 中的面向对象编程,但我不太清楚如何为类编写方法
-
我的第一个问题是,你可以同时继承两个类吗? 示例:
class A: def __init__ eg. storing list of strings class B: def __ init__ eg. storing list of strings # I want to inherit both class A and B into class C class C (A,B):这可能吗?许多示例只显示了从一个类继承。
-
假设我可以从
class A和class B导入方法,我需要合并class A中的实例和class B中的实例。例如,class A存储名称列表,class B存储头发颜色列表。在class C我想把名字和头发颜色加在一起,这样我就可以知道谁的头发颜色是什么。我不太确定如何将这两个对象添加在一起,但这是我的尝试。你能帮我提供如何解决这个问题的建议吗?class A: def __init__(self,name): self.name= name def getName(self): return self.name # this is so that i whenever i call the object in my class C, it will return the name class B: def __init__(self,hair): self.hair = hair def getHair (self): return self.hair class C(A,B): def __init__(self): A.__init__(self,name) B.__init__(self,hair) self.add= [self,A,B] def add(self,name,hair): # my method to combine instances in class A and B self.add.append[name,hair]
解决此添加问题后,即存储谁拥有哪种头发颜色的信息,我的目标是在class C 中创建另一个方法,当我提供头发颜色参数时,它将列出所有具有相同头发颜色的名称.如果不先添加两个实例,我就无法做到这一点。
我试图通过给每个类几个对象来运行它。 class A 和 class B 没问题,我可以让程序返回我的名字和头发颜色。但问题是在我尝试执行 .add 部分之后出现的。它给了我一条消息错误,上面写着
TypeError: 'list' object is not callable
请告诉我整个事情是否有问题,我应该开始使用不同的方法编写,否则我的程序仍然可以获救。
【问题讨论】:
-
关于您的第一个问题:是的,您可以这样做。它被称为multiple inheritance。
-
请注意,使用您定义函数
add的方式,它在类外是不可见的。您需要减少函数的缩进才能使其可见 -
在这种情况下,我建议您优先考虑组合而不是继承。
标签: python class inheritance