如何使一个python类接受另一个类?

如何使一个python类接受另一个类?,python,python-3.x,class,inheritance,Python,Python 3.x,Class,Inheritance,我正在用Python制作一个虚拟助手。我有一个用于提示的类,一个用于处理请求的当前空类,还有一个用于显示结果的类 这是我的密码: #Pysistant #使用Python和Tkinter构建的Google助手克隆(ish) 将tkinter作为tk导入 类提示: 定义初始化(自我、类型、消息): self.window=tk.tk() self.message=消息 self.typ=typ.lower() 如果类型==“一行”: self.text=tk.Label(self.window,t

我正在用Python制作一个虚拟助手。我有一个用于提示的类,一个用于处理请求的当前空类,还有一个用于显示结果的类

这是我的密码:

#Pysistant
#使用Python和Tkinter构建的Google助手克隆(ish)
将tkinter作为tk导入
类提示:
定义初始化(自我、类型、消息):
self.window=tk.tk()
self.message=消息
self.typ=typ.lower()
如果类型==“一行”:
self.text=tk.Label(self.window,text=self.message)
self.frame=tk.frame(self.window)
self.entry=tk.entry(self.frame)
self.button=tk.button(self.frame,text=“Done”,command=lambda:self.command\u包装器(self.entry.get().lower())
self.text.pack()
self.entry.pack()
self.button.pack()
self.frame.pack()
def命令_包装(自我,查询):
如果查询中的“数学”或“计算”:
func=“数学”
params=查询[5:]
self=命令(func,params)
def退出(自我):
self.window.destroy()
类命令:
定义初始化(self、func、params):
self.window=tk.tk()
self.func=func
self.params=params
self.text=tk.Label(self.window,text=“处理您的请求”)
self.text.pack()
self.quit()
###TODO:为不同的函数创建子类
instance=Prompt('一行',“您今天想要完成什么?”)

我希望实例在调用
Command\u wrapper()
后引用
命令
对象,但它引用的是
提示符
对象。调用
instance.quit()
只会破坏提示窗口。

不确定我是否正确理解了这个问题-这就是您要查找的吗

    def command_wrapper(self, query):
        if "math" or "calc" in query:
            func = "math"
            params = query[5:]
        return Command(func, params)

Prompt
实例
self
的引用不会替换为这样一个赋值
self=Command(func,params)
(在
Command\u wrapper
方法中),它只是上下文中的局部变量

您的短语“我希望实例引用
命令
对象”表示打算使用委托
为代理定义一个附加字段,例如
self.\u command=None
(在
提示符
构造函数中)。
修改
command\u wrapper
以设置委托
self.\u command=command(func,params)

更改
quit
方法以销毁内部命令窗口:


但是,要最终销毁初始提示符实例窗口,您必须直接调用它:
prompt\u instance.window.destroy()

分配给
self
不会修改原始对象;它只是使局部变量
self
引用一个新对象。
instance
仍然引用一个
Prompt
对象。
def quit(self):
   self._command.window.destroy()