关于在Python中创建类的需要

2024-05-15 18:03:24 发布

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

假设我有一个Python模块来控制视频会议系统。在这个模块中,我有一些全局变量和函数来控制视频会议、通话、电话簿等的状态

为启动控制系统,模块自行执行初始化视频会议的功能(以太网连接、轮询状态等)

现在,如果我需要开始控制第二个视频会议系统,我不知道如何解决这个问题:我想把视频会议模块变成一个类,创建两个实例(每个视频会议系统一个),然后初始化它们,但问题是我不需要有两个视频会议类的实例,因为我不会对这些对象做任何事情,因为我只需要初始化系统;在那之后,我不需要再打电话给他们,也不需要留着他们做其他的事

示例代码:

视频会议.py

class Videoconference:
    def __init__(self):
        self.state = 0
        #Initialization code

主.py

from Videoconference import Videoconference

vidC1 = Videoconference()
vidC2 = Videoconference()
#vidC1 and vidC2 will never be use again

所以,问题是:我是否应该将视频会议模块转换为类并创建实例(如示例中所示),即使我不打算将它们用于初始化过程的任何其他方面?或者有没有其他不创建类的解决方案


Tags: 模块实例函数pyself示例状态系统
3条回答

这听起来像是VideoConferenceSystem对象的完美用例。你说你有globals(ew!)统治国家(恶心!)并调用函数进行控制

听起来你有机会把这些都转换成一个对象,这个对象有保存状态的属性和改变状态的方法。听起来您应该重构的不仅仅是初始化代码,所以那些vidC1vidC2对象很有用

也许这是一个偏好的问题,但我认为在上述情况下拥有一个类将是更安全的赌注。通常我会写一个函数,当它变得太复杂的时候,我会认为我应该创建一个类(并且经常这样做),但是我从来没有创建过一个太简单的类,并且认为这太简单了为什么我不创建一个函数呢

即使只有一个对象而不是两个对象,创建类通常也有助于提高可读性。例如:

vid = VideoConference()
# vid.initialize_old_system() # Suppose you have an old system that you no longer use
                              # But want to keep its method for reference
vid.initialize_new_system()
vid.view_call_history(since=yesterday)

我认为你以你的例子来处理这个问题是正确的。这样,您可以有多个视频会议,每个视频会议可能具有不同的属性状态(例如vidC1.conference\u duration等)

相关问题 更多 >