![](/img/trans.png)
[英]Python: type-hinting a classmethod that returns an instance of the class, for a class that is inherited
[英]Inherited class returns NoneType instance
我试图在 Tkinter 中创建我自己的小部件,所以我从 Frame 类继承。 但出于某种原因,我的Food
类返回NoneType
类实例。 为什么会发生,我怎样才能让它返回一个Food
类的实例?
import tkinter as tk
class Food(tk.Frame):
def __init__(self,parent,index,name="",price=0):
tk.Frame.__init__(self, parent)
self.name = tk.Entry(self)
self.price = tk.Entry(self)
self.name.insert(0, name)
self.price.insert(0, str(price))
self.name.pack(ipadx=70,ipady=5,side='left',expand=True, fill='x')
self.price.pack(ipadx=10,ipady=5,side='left')
self.index=index
def getIndex(self):
return self.index
if __name__ == "__main__":
root = tk.Tk()
print(type(Food(root,1).pack(fill='x'))) # <class 'NoneType'>
root.mainloop()
这是因为您已将 .pack() 函数放在 type() 函数中,这使得 type() 返回函数'Food(root,1).pack(fill='x')'的返回类型(这是 None),而不是您想要的类对象'Food(root,1)' 。
请注意, Food(root,1).pack(fill='x')
将获得.pack(...)
的结果,该结果始终为None
。
您需要将该行拆分为两行:
...
frame = Food(root, 1)
frame.pack(fill='x')
print(type(frame))
...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.