如何从主类聚合函数 - Python

时间:2017-02-19 17:04:03

标签: python oop aggregation

如何在不收到TypeError: myMasterFunction() missing 1 required positional argument: 'master'

错误的情况下使用以下代码

示例程序:

from tkinter import *
class printing():
    def printSentence(self):
        #Call print_name function
        myMasterClass().print_name()
        print("Tom")

class myMasterClass():
    def __init__(self,master):
        super(myMasterClass,self).__init__(master)
    def print_name(self):
        print("My name is...")

printing().printSentence()
root = Tk()
myGUI = myMasterClass(root)
root.mainloop()

非常感谢。 P.S我是OOP的新手,所以我不确定这是否是聚合,但我不想做继承。

1 个答案:

答案 0 :(得分:0)

我不知道您要实现的目标,但是当您创建print 时,您将覆盖原来的print 功能在命名空间中。因为您的打印没有采用任何参数(未提供__init__),调用print("Tom")将引发错误。这是第一个。另一个是在呼叫super(myMasterClass,self).__init__(master)。正如您所看到的,您没有在此类中使用任何继承,默认情况下,该继承将从object类继承。并且对象类也没有采用任何参数,因此尝试提供master参数将导致错误。总的来说,我不知道你想在这里实现什么,但我认为如果你想在默认的print函数中添加一些额外的东西,那么使用装饰器而不是类似的东西要容易得多