我在写有两个类的代码。one类为三维环境创建文本元素。另一个会把它们在那种环境中组合在一起。我要做的是让第二个类调用第一个类的实例。换句话说,在def makeGroup
中,我希望能够调用class msg
的实例。编码将如何措辞?目前,第一个类被继承到第二个类中,然后我尝试调用对象self.text文件,但我不知道该怎么说。我认为我没有正确地使用继承。你知道吗
class msg:
def __init__(self,num,unit):
self.message = str(num) + ' ' + unit
self.num = num
self.text = viz.addText(self.message)
class msgGroup(msg):
def __init__(self,x,y,z):
self.msgLs=[]
self.ghostMsg= viz.addText('',pos=[x,y,z],color= [0.000, .9, 0.071])
self.msgLs.append(self.ghostMsg)
def makeGroup(self):
msg.text.setPosition([0,(len(self.msgLs)-1)*-1.5,0], viz.REL_PARENT)
self.msgLs.append(msg.text)
五件事:
msg
类应该继承自object
msgGroup
从msg
继承,那么每个msgGroup
实例还拥有msg
实例拥有的所有成员(数据、方法和更奇特的东西)。在方法makeGroup
中,要引用当前实例的text
成员,只需执行self.text
。你知道吗您可能希望每个
msgGroup
都有几个msg
。要做到这一点,不要使用继承,只要让msgGroup
有一个msg
的列表,然后对其进行迭代:引用对象或类的成员不称为“调用它”。可以使用
()
操作符调用函数、方法和其他可调用项(如类)。你知道吗不,你确实误解了继承。继承是指当B类与A类共享所有相同的属性,但有更多的,也许更具体的属性时:例如人就是人。你知道吗
你的情况不同:你有一个组,一个组有消息。这是组合,而不是继承:“has-a”,而不是“is-a”。您只需在
msgGroup
内定义一个消息列表,并向其中添加消息,然后就可以遍历消息并访问它们的text
属性。你知道吗相关问题 更多 >
编程相关推荐