如何解决在Python中调用方法时,参数'self'没有值
我在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()的代码。因此,不同的类是我组织代码的一种方式。 好的方法吗?
在此先感谢您的帮助!
解决方法
这里的问题是您正在编写没有 init 函数的类,并且您的类没有自变量。
例如:
class Person:
def __init__(self):
health = 100
name = "Harry"
def changeName(self,newName):
self.name = newName
仅适用,因为有 init 函数。像self.name这样的自变量的原因是这样,以便以后可以编辑值,就像您尝试使用Main.bps一样。如果您在 init 函数中具有self.bps,则可以在以后的函数中对其进行编辑,前提是您还要在函数中编写self.bps。我不确定只在类中单独使用bpm之类的东西,而不是在self.bps中使用,因为我确定bps在Main忽略函数范围内是私有的。另外,请务必检查您的缩进! :)
,感谢您的所有评论!我想出了一些可行的方法。我希望这也是有道理的。然后我修正了缩进。
import winsound
import time
class MetronomeCalc:
def __init__(self):
self.metronomeState = True
self.currentMillis = 0
self.lastMillis = 0
self.intervalMillis = 0
self.bpm = 120
self.bps = 0
self.bpms = 0
self.measureCount = 0
def getBpm(self):
bpm = 120
return bpm
def bpmToMilliInterval(self):
self.bps = self.bpm/60
self.intervalMillis = int((1/self.bps)*1000)
def playMetronome(self):
self.bpmToMilliInterval()
while self.measureCount < 8:
if self.currentMillis - self.lastMillis >= self.intervalMillis:
self.lastMillis = int(round(time.time()*1000))
winsound.Beep(1000,100)
self.measureCount = self.measureCount + 1
else:
self.currentMillis = int(round(time.time()*1000))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。