【问题标题】:How can i separate methods of a class in separate files?如何在单独的文件中分离一个类的方法?
【发布时间】:2020-08-09 04:31:48
【问题描述】:

假设我们有这个类:

Class example:
       def __init__(self):
             self.var = 23

如何通过在主文件中导入另一个文件中的函数来访问该变量?

def my_func():
       pass

事实上,我希望“my_func()”成为“示例”类的一个方法,但在一个单独的文件中。

【问题讨论】:

  • 没有正常的方法可以做到这一点。您不应该能够将方法声明为类的一部分,在该类之外
  • 所以你的意思是没有办法划分一个类来分隔文件?
  • 您可以为整个模块使用__init__,然后将内容导入其中以确保您的所有方法都是同一个模块的一部分,但是不,我不知道如何划分将单个 class 分成两个单独的文件。据我所知,这在大多数面向对象的编程语言中都是一样的。为什么要这样做?
  • 我的课程由非常大的方法组成,我想将这些方法分开来分开文件,以便我的主文件更干净。
  • 这是非常可行的,但通常不鼓励,因为它打破了其他开发人员的假设。如果您的方法太大以至于需要单独的文件,那么它们和扩展类肯定会同时做太多事情。考虑改进您的应用程序设计(SOLID 似乎适用),而不是现有设计的布局。

标签: python class module


【解决方案1】:

这个想法是将你的类分成两个没有自己的数据的类——只有方法——所以虽然你继承了它们,但你永远不必对它们调用 super()。这些类称为“mixins”

_example.py

class Mixin:

    def my_func(self):
        print(self._b)

example.py

import _example

class Example(_example.Mixin):

    def __init__(self):
        self._a = 1
        self._b = 2
        self._c = 3

现在你可以这样做了:

ex = Example()
ex.my_func() # This will print "2" on console.

您可以检查不同的方法here

【讨论】:

    猜你喜欢
    • 2016-01-09
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 2020-01-25
    • 1970-01-01
    • 2017-03-14
    • 2015-05-23
    • 1970-01-01
    相关资源
    最近更新 更多