Tkinter学习疑问:self.frames赋值为字典不报错,是变量还是方法?
问题解答
1. self.frames的属性判定
self.frames属于当前SeaofBTCapp类的实例变量(实例属性),不是方法:
- 在Python的类逻辑中,只有绑定到
self、值为可调用函数的对象才是实例方法 - 这里你给
self.frames赋值的是空字典{},后续用来存储多个页面对象,属于普通的自定义实例变量,和写self.count = 0这类操作没有本质区别。
2. 赋值字典不会报错的原因
这个操作完全符合Python和Tkinter的语法规则,原因有两点:
- Python是动态类型语言,类的实例属性不需要提前声明,你可以在
__init__初始化方法内任意给self绑定新属性 - 你继承的父类
tk.Tk本身没有预设frames属性,就算父类有同名属性,子类也可以合法覆盖重写,不存在语法错误。
补充说明:这个字典存页面的写法是Tkinter多页面切换的经典实现逻辑,所有页面初始化后都存在这个字典里,调用
show_frame方法时直接取出对应页面抬到顶层显示,不需要重复创建页面实例。
内容的提问来源于stack exchange,提问作者FragThemBoshKidz
相关产品推荐
相关产品推荐

