首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于在Python中创建类的必要性

关于在Python中创建类的必要性
EN

Stack Overflow用户
提问于 2016-12-14 20:52:53
回答 3查看 41关注 0票数 0

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

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

现在,如果我需要开始控制第二个视频会议系统,我不知道如何解决这个问题:我考虑将视频会议模块作为一个类,创建两个实例(每个视频会议系统一个),然后初始化这两个实例,但问题是,我实际上不需要有两个视频会议类的实例,因为我不会对这些对象做任何事情,因为我只需要初始化系统;在那之后,我不需要调用或保留它们用于其他任何事情。

示例代码:

Videoconference.py

代码语言:javascript
复制
class Videoconference:
    def __init__(self):
        self.state = 0
        #Initialization code

Main.py

代码语言:javascript
复制
from Videoconference import Videoconference

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

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-12-14 21:03:41

也许这是一个优先考虑的问题,但我认为在上述情况下上一节课是更安全的选择。我经常会编写一个函数,当它变得太复杂时,我会认为我应该创建一个类(并且经常这样做),但是我从来没有创建过一个太简单的类,并且认为这太简单了,为什么我不创建一个函数。

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

代码语言:javascript
复制
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)
票数 2
EN

Stack Overflow用户

发布于 2016-12-14 21:03:37

这听起来像是VideoConferenceSystem对象的完美用例。你说你有球体(哦!)统治国家的人(讨厌!)并调用函数进行控制。

在我看来,你有机会把所有这些都转换成一个拥有状态属性的对象,并有方法对其进行变异。听起来,您应该重构的不仅仅是初始化代码,所以这些vidC1vidC2对象是有用的。

票数 1
EN

Stack Overflow用户

发布于 2016-12-14 21:06:57

我认为在你的例子中,你处理这个问题的方式是正确的。通过这种方式,您可以有多个视频会议,每个视频会议都可能有不同的属性状态(例如,vidC1.conference_duration等)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41151958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档