如何使一个python类接受另一个类?
我正在用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
#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()