PyQt5 的ui文件转为py文件,代码里关于面向对象的问题
如图,这是ui文件转成py文件的代码, setupUi 函数里的控件都加上了 self ,那么这些控件是 Ui_Form 类的实例属性吗?如果不是实例属性的话,那这些又算什么,只是单纯的变量吗,加 self 和不加有什么区别? 按照我个人理解,就是实例属性跟__init__类型,如果不加,多个实例声明时会出现变量覆盖,导致控件混乱:Dweeqw 加了self就是相当于把这些变量绑定到实例化对象,如果不加的话,就是相当于它只是某个函数内的局部变量,在外面就访问不了了 本帖最后由 冬酒暖阳 于 2022-11-25 16:46 编辑
self 指的是实例对象本身,前面加 self 就相当于把这个变量放到对象身上,如果不加的话在执行完 setupUi 函数之后,这些没有被其他地方使用的变量就会成为垃圾,会被 python 的垃圾回收器回收释放内存空间,等于说他只在 setupUi 这个函数执行的过程中存在,setupUi 执行结束后就被销毁了,就是这个 setupUi 方法的局部变量。而前面加上 self 就是将变量绑定到对象身上,它就成为了对象自己的实例属性,在 setupUi 执行结束之后,也不会被销毁。只有当这个对象也不再使用的时候,才会连同对象一起被销毁释放
加self是实例属性,可以在类内部以self加点形式访问该属性,类在应用中被实例化成对象后,可以通过对象名加点的形式访问该属性
不加self是函数的局部变量,函数结束后就不存在了
你看赋初值的时候啊,把对应类型的实例绑定到class的成员变量上去了 本帖最后由 用温柔将我杀死 于 2022-11-26 20:50 编辑
好东西学习了
页:
[1]