为什么使用类?

2024-09-28 23:28:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我转换了这个“非面向对象”代码:

from Tkinter import *

root = Tk()
frame = Frame(root)
frame.pack()

bottomframe = Frame(root)
bottomframe.pack( side = BOTTOM )

redbutton = Button(frame, text="Red", fg="red")
redbutton.pack( side = LEFT)

bluebutton = Button(frame, text="Blue", fg="blue")
bluebutton.pack( side = LEFT )

root.mainloop()

对于此面向对象代码:

^{pr2}$

这两个片段都会在屏幕上弹出一个简单的窗口。我的问题是,在这种情况下,面向对象编程(即使用类)的好处是什么?在

如果我想生成另外3个窗口(使用类),但是按钮颜色改变了,我是否必须修改蓝图(即类),或者在调用类实例时有什么方法可以做到?在


Tags: 代码textfrombuttonroot面向对象leftframe
3条回答

想一想,如果你有两个窗口都有红色按钮和蓝色按钮,会发生什么。你能理解为什么将它们封装在一个对象中会有帮助吗?在

“面向对象编程”不仅仅是使用class关键字编写过程性程序。如果有一个只调用一次的类,并且该类只有一个方法,即__init__(),那么就不是OOP了。”在这种情况下,“没有任何好处,而且你并不是真正在做“面向对象编程”。在

一般来说,OOP的好处是众所周知的,但在我看来,主要的好处是降低代码的复杂性。在

下面是一个类结构的用例

from Tkinter import *
class Window(Frame):
    def __init__(self, parent = None):
       Frame.__init__(self, parent)
       self.pack()

    def createButton(self, text, fg, side):
        widget = Button(self, text = text, fg = fg)
        widget.pack(side = side)

if __name__== '__main__':
    _win = Window()
    _win.createButton("Red", "red", LEFT)
    _win.createButton("Blue", "blue", RIGHT)
    _win.mainloop()

但这是一个简单而简短的代码。对于长而复杂的代码,它可以帮助您定义类变量并从类中的任何函数访问它们。此外,您还可以创建可重用的函数,并像您的示例中那样删除重复的行。在

最好多读一些关于OOP的知识,因为在这里讲所有方面并不简单。在

相关问题 更多 >