假设我有一个Python模块来控制视频会议系统。在这个模块中,我有一些全局变量和函数来控制视频会议、通话、电话簿等的状态。
为了启动控制系统,模块自动执行初始化视频会议(以太网连接、轮询状态等)的功能。
现在,如果我需要开始控制第二个视频会议系统,我不知道如何解决这个问题:我考虑将视频会议模块作为一个类,创建两个实例(每个视频会议系统一个),然后初始化这两个实例,但问题是,我实际上不需要有两个视频会议类的实例,因为我不会对这些对象做任何事情,因为我只需要初始化系统;在那之后,我不需要调用或保留它们用于其他任何事情。
示例代码:
Videoconference.py
class Videoconference:
def __init__(self):
self.state = 0
#Initialization codeMain.py
from Videoconference import Videoconference
vidC1 = Videoconference()
vidC2 = Videoconference()
#vidC1 and vidC2 will never be use again因此,问题是:我是否应该将视频会议模块转换为类并创建实例(如示例中所示),即使我不打算将它们用于初始化过程的任何其他部分?或者,在没有创建类的情况下,还有其他解决方案吗?
发布于 2016-12-14 21:03:41
也许这是一个优先考虑的问题,但我认为在上述情况下上一节课是更安全的选择。我经常会编写一个函数,当它变得太复杂时,我会认为我应该创建一个类(并且经常这样做),但是我从来没有创建过一个太简单的类,并且认为这太简单了,为什么我不创建一个函数。
即使您有一个对象而不是两个对象,创建类通常也有助于提高可读性。例如:
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)发布于 2016-12-14 21:03:37
这听起来像是VideoConferenceSystem对象的完美用例。你说你有球体(哦!)统治国家的人(讨厌!)并调用函数进行控制。
在我看来,你有机会把所有这些都转换成一个拥有状态属性的对象,并有方法对其进行变异。听起来,您应该重构的不仅仅是初始化代码,所以这些vidC1和vidC2对象是有用的。
发布于 2016-12-14 21:06:57
我认为在你的例子中,你处理这个问题的方式是正确的。通过这种方式,您可以有多个视频会议,每个视频会议都可能有不同的属性状态(例如,vidC1.conference_duration等)。
https://stackoverflow.com/questions/41151958
复制相似问题