如何从大师班聚合一个函数 - Python
Posted
技术标签:
【中文标题】如何从大师班聚合一个函数 - Python【英文标题】:How to aggregate a function from the master class - Python 【发布时间】:2017-07-08 21:08:37 【问题描述】:我怎样才能让下面的代码工作,而不会得到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 的新手,所以我不确定这是否是聚合,但我不想做继承。
【问题讨论】:
您发布的代码不可能给出错误myMasterFunction() missing 1 required positional argument
,因为尚未定义myMasterFunction
。
@BryanOakley 哦,对不起。 myMasterClass
而不是
【参考方案1】:
我不知道您要实现什么,但是当您创建 print
class 时,您将覆盖原来的 print
function命名空间。并且由于您的 print class 不带任何参数(未提供 __init__
),因此调用 print("Tom")
将引发错误。那是第一个。另一个是打电话给super(myMasterClass,self).__init__(master)
。如您所见,您没有在此类中使用任何继承,默认情况下它将继承自 object
类。并且对象类也不接受任何参数,因此尝试提供master
参数将导致错误。总的来说,我不知道你想在这里实现什么,但我认为如果你想在默认的 print
函数中添加一些额外的东西,使用装饰器而不是类似的东西会更容易。
【讨论】:
print("Tom") 实际上只打印字符串“Tom”。这个问题与给类和函数的名称无关。 顺便说一句,这不是我的实际程序。我刚刚编了一个来证明我的问题 我稍微更改了代码以表明我有一个 GUI。你能告诉我如何解决这个问题吗? 如我所说。问题出在myMasterClass().print_name()
。您的 myMasterClass
需要在您的 __init__
定义中传递一个参数。您没有在 printing.printSentence()
函数中传递它。以上是关于如何从大师班聚合一个函数 - Python的主要内容,如果未能解决你的问题,请参考以下文章