我已经玩了两个星期的脚本,还没有遇到任何问题,但是我现在正在尝试创建一个类,并且遇到了问题。

我自己并不完全理解它,但是当我尝试创建以下类的实例时出现此错误NameError: global name 'instance_status_check' is not defined

我完全知道这堂课目前做得并不多,但是直到解决问题我才能继续。有人可以解释我做错了吗?

import sys
import boto
import boto.ec2

class Monitor:

    def __init__(self,conn,identifier):
        self.connection = conn
        self.identifier = identifier
        self.dispatcher ={'1': instance_status_check}

    def user_menu():
        for i, value in self.dispatcher.itertems():
            print "Please press {i} for {value}".format(i,value)

    def instance_status_check():
        pass

最佳答案

两种方法都缺少self参数,它是iteritems而不是itertems

class Monitor:  # upper case for class names
    def __init__(self,conn,identifier):
        self.connection = conn
        self.identifier = identifier
        self.dispatcher ={'1': self.instance_status_check} # call self.instance_status_check()

    def user_menu(self): # self here
        for i, value in self.dispatcher.iteritems():
            print("Please press {i} for {value}".format(i,value))

    def instance_status_check(self): # self here
        return "In status method"

m = Monitor(3,4)
print(m.dispatcher["1"]())
In status method


我建议您看一下docs中的类教程

关于python - 类实例初始化时发生NameError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26473798/

10-14 05:53