【问题标题】:Should I use a class to define functions that will use the same arguments, or should I use global variables?我应该使用一个类来定义将使用相同参数的函数,还是应该使用全局变量?
【发布时间】:2019-03-27 13:59:14
【问题描述】:

首先,如果问题已经在某处得到解答,我深表歉意,我还没有找到问题的答案,但我对使用 stackoverflow 还很陌生。

我正在尝试优化一些代码,我想以“正确”的方式来做。我有一个函数 A,它进行预处理并定义了一些变量,这些变量将被另一个函数 B 使用。现在,我不能直接在 B 中定义这些变量,因为我想避免重复处理步骤。我可以将变量作为参数传递给函数 B,但为了简化这一点,我想避免这种情况。

一种选择当然是使用全局变量,但我在多个地方读到这是一个坏习惯,原因之一是它破坏了封装。

我可以看到的另一种选择是定义一个类(某种主类),我在其中放置所有要使用的函数并传递“self”以访问变量。有人对此有异议吗?出于某种原因,这也是一种不好的方法吗?

提前感谢任何有回应的人!

【问题讨论】:

  • 如果不了解更多细节,这很难说。结果是否仅由函数 B 使用?然后我认为归还它们并将它们作为参数提交是正确的方法。它们是否代表某种与 A 和 B 相关的状态?也许上课是正确的方式。全局变量(几乎)总是不可行,除非在非常特殊的情况下。
  • 这很容易概括:“我应该使用全局变量”的答案通常是“不”。
  • @L3viathan 感谢您抽出宝贵时间回复。确实,我也许应该提供更多背景信息。假设我有一个模拟天体物理对象的文件。此代码已经包含类和函数。查看代码结构时,我觉得我可以将所有内容放在一个新类中(从而将整个模拟视为一个对象),其中包含已为模拟的不同元素定义的类和函数。我的问题是:这个接缝对你来说是异端吗,还是说这不是那么荒谬?

标签: python python-3.x


【解决方案1】:

使用self 是最好的方法。我想你的情况与此类似。

class DemoClass:

    def __init__(self, name, age):
        self.name = name
        self.age = age

    def fun1(self): 
        print(self.name)

    def fun2(self):
        print(self.age)

在这里,您可以在传递 self(类的实例)时访问变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-21
    • 1970-01-01
    • 2012-06-25
    • 1970-01-01
    • 2010-12-11
    • 2015-03-09
    相关资源
    最近更新 更多