【问题标题】:Python objects in other classes or separate?Python 对象在其他类中还是分开的?
【发布时间】:2016-09-14 12:38:18
【问题描述】:

我正在使用 Python 2.7 开发一个应用程序,它有几个类需要在将所有内容返回到主程序进行输出之前相互交互。

代码的一个简短示例是:

class foo_network():
    """Handles all network functionality"""
    def net_connect(self, network):
       """Connects to the network destination"""
       pass

class foo_fileparsing():
    """Handles all sanitation, formatting, and parsing on received file"""
    def file_check(self, file):
        """checks file for potential problems"""
        pass

目前我有一个主文件/函数,它实例化所有类,然后根据需要在它们及其方法之间来回传递数据。不过这似乎有点笨拙。

因此我想知道两件事:

  1. 最“Pythonic”的处理方式是什么?
  2. 处理此问题以提高性能和内存使用率的最佳方法是什么?

我想知道我是否应该只在另一个类中实例化一个类的对象(例如,在foo_network 类中创建一个foo_fileparsing 对象,如果这是唯一将调用它的类,而不是比我目前将所有内容返回到主函数并以这种方式在对象之间传递它的方法不同。

很遗憾,我找不到可以解决此类情况的 PEP 或其他资源。

【问题讨论】:

  • 我不太清楚你在问什么。如果您有您认为可以改进的工作代码,请参阅Code Review。如果不是这样,像 "most pythonic" 这样的东西对于 SO 来说往往过于基于意见,并且性能会因太多其他参数而异。

标签: python oop


【解决方案1】:

您可以使用模块。并将每个课程都放在一个模块中。 然后您可以使用 import 仅从该类中导入特定方法。

你需要做的就是创建一个与你的类名同名的目录,并在该目录中放置一个__init__.py 文件,告诉python将该目录视为一个模块。

然后例如foo_network文件夹包含一个名为foo_network.py的文件和一个文件__init__.py和foo_network.py中的代码是

class foo_network():
    """Handles all network functionality"""
    def net_connect(self, network):
       """Connects to the network destination"""
       pass

在任何其他文件中您都可以简单地使用

import net_connect from foo_network

它只会导入那个特定的方法。这样您的代码就不会显得凌乱,您可以只导入所需的内容。

你也可以这样做

from foo_network import *

一次导入所有方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-24
    • 2019-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    相关资源
    最近更新 更多