我已经很久没有使用python了,我在声明和使用函数方面很挣扎。尝试调用已定义的函数时,我遇到了全局名称错误。
我尝试使用balances(account, date)
,但是我有点迷失了它的工作原理。
self
我遇到的错误是
def main():
size = int(sys.argv[1])
print(size)
generate = gen(size)
print(generate)
def gen(self, size):
#generate...
return size
if __name__ == "__main__":
main()
。
答案 0 :(得分:1)
只需直接回答问题-
class paging():
def main():
generate = gen(size)
def gen(self, size):
return size
paging
,它是一个类。class.method
。因此,此处的函数名称应为paging.gen
self
作为第一个参数,它是类实例的代表。您可以使用self来调用对象上的其他实例方法...
def main(self): self.gen()
坚持下去,很难跳冷
答案 1 :(得分:1)
似乎您不需要在这里上课,如果您想在没有该类的情况下运行代码,则可以使用
import random
import sys
def gen(size):
# generate...
return size
def main():
#Not sure where you are passing pages?
size = int(sys.argv[1])
print(size)
generate = gen(size)
print(generate)
print("FIFO", FIFO(size,pages), "page faults.")
print("LRU", LRU(size,pages), "page faults")
print ("OPT", OPT(size,pages), "page faults")
def FIFO(self, size, pages):
return "hello"
def LRU(self, size, pages):
return "hello"
def OPT(self, size, pages):
return "hello"
if __name__ == "__main__":
if len(sys.argv) != 2:
print "Usage: python paging.py [number of pages]"
else:
main()
答案 2 :(得分:0)
generate = gen(size)
的{{1}} generate = self.gen(size)
作为self
方法的第一个参数答案 3 :(得分:0)
您必须使用自我。如果要调用属于该类的方法的前缀。 相反,如果要全局调用main()并将其放置在类之外,则不应在其自身的类中定义main()和gen()函数。 因此,当您调用gen()时,gen()不是全局函数,而是一个在类中的函数,您应该输入
generate = self.gen(size)
请记住,python缩进是具有块的方式。因此,如果缩进main,main将位于class块中,并且不会全局可用。