我在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
请告诉我整件事是否错误,我应该开始用不同的方法写作,否则我的程序仍然可以获救。
答案 0 :(得分:1)
第一个问题。答案是肯定的。
在类定义之后,你需要某些东西。有时,所有行为都由A和B定义,因此您只需将pass
放在那里(或文档字符串)
class C(A, B):
pass
第二个问题:追加是一个函数,你需要用括号调用它
self.add.append((name, hair))
您不能拥有属性add
和方法add
,因为它们共享相同的命名空间。您最后定义的那个将替换另一个