python - 保持类松散耦合并共享数据

标签 python class loose-coupling

我一直在 python 项目中工作,其中我有一个 GUI,我在类之间分配了一堆工作。我不知道很多在类之间传递数据的最佳实践,而且我经常遇到这个问题,我必须实现一些东西,或者改变一些东西来工作,并且我已经采取了很多方法另一个类的类对象,以便为其提供我需要的数据。

对于如何保持我的类独立以供以后修改并仍然传递相关数据而不过多影响接口(interface)的任何想法或建议将不胜感激?

举个例子

class Window():
    def __init__(self, parent=None):
        self.parent = parent
    def doStuff(self):
        #do work here

class ParseMyWork(Window):
    def __init__(self, parent=None):
        self.parent=parent

我经常发现自己在做类似上面的事情,将对象传递给类 Window 或者简单地继承它们的所有内容,如 ParseMyWork

必须有更好、更干净的方式来传递数据,而不会使我的类完全相互依赖,其中一个小小的更改会产生级联效应,迫使我在一堆其他类中进行更改。

问题的任何答案不一定必须用 python 编写,但如果是的话将会很有帮助

最佳答案

如果我正确理解你的问题,我会说继承在你的情况下是不必要的。为什么不给 ParseMyWork 一个函数来处理特定的 Window 任务?

class Window():
  def __init__(self, parent=None):
    self.parent = parent

  def doStuff(self):
    #do work here

class ParseMyWork():
  def __init__(self, parent=None):
    self.parent=parent`

  def doWindowActivity(self, window):
    window.doStuff

然后你就可以像这样使用这个函数了

    work_parser = ParseMyWork()
    window = Window()
    work_parser.doWindowActivity(window);

这样您就可以将 work_parse 实例与任何窗口实例一起使用。

提前为我的 Python 道歉,已经有一段时间了,所以如果您发现任何菜鸟错误,请指出它们。

关于python - 保持类松散耦合并共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44422519/

相关文章:

java - 通过构造函数传递参数

python - 如何从 Jenkins 将 Python 应用程序部署到 Amazon Elastic Beanstalk?

python - 使用python获取远程服务器上的DB2列表db目录

python - 通过flask框架访问XAMPP中的MySQL数据库

c++ - 是否可以重用构造函数?

php - Symfony2 并避免过于冗长的代码

python - 如何使用 ensure_csrf_cookie?

objective-c - 从另一个类调用 float 组

java - 什么是 C# 等同于 Java 的 ClassName.class.getSimpleName()

asp.net-mvc-3 - MVC 3 将实体作为接口(interface)传递