【发布时间】:2020-10-21 16:59:58
【问题描述】:
我在 stackoverflow 内外做了很多研究。是的,有类似的主题。但我找不到我的具体问题的答案。可能是因为我目前对 Python 的理解还看不到更大的图景。
在最后一行中,我收到错误“方法调用中的参数 'self' 没有值”。我将如何在这里正确调用该方法?还是根本不可能在同一个类中调用方法?
class Main:
metronomeState = True
currentMillis = 0
lastMillis = 0
intervalMillis = 0
bpm = 120
measureCount = 0
def bpmToMilliInterval(self):
self.bps = Main.bpm/60
return int((1/self.bps)*1000)
Main.intervalMillis = Main.bpmToMilliInterval()
这个类似乎没有理由,因为我不需要实例化它。但我想在另一个负责所有 GUI 内容的类 Gui() 中使用 Main() 的代码。所以不同的类是我组织代码的一种方式。 方法好不好?
提前感谢您的帮助!
【问题讨论】:
-
缩进正确吗?此外,您正在类上调用假定的实例方法。你想在类定义的时候设置一个类属性吗?
-
你的类唯一的实例属性是
bps,它不是在__init__中建立的;所有其他属性都是类属性。是否应该可以创建Main的实例?如果不是,这是一个非常奇怪的类,但您可能只想将bpmToMilliInterval设为@classmethod(假设bps需要在调用后保留)并且(仅用于正确的样式)将所有引用更改为self到cls。最后一行必须在类定义之外(我怀疑它在你的真实代码中,因为无论如何将它放在类中都是不合法的)。 -
仅仅因为您可能不需要 更多 个实例并不意味着您不应该拥有 一个 个实例。如果你的类只有一个方法(可能是类方法),它可能只是一个带有很多参数的常规函数(其中大部分都有默认值)。
标签: python methods self method-call