Python ';MyClass';对象没有属性';选择"db"u标志';错误

Python ';MyClass';对象没有属性';选择"db"u标志';错误,python,python-2.7,Python,Python 2.7,我需要一些帮助,因为我的当前代码有问题。我试图调用GoRight函数,但它会给我一个错误:AttributeError:“MyClass”对象没有属性“select\u db\u flag” 错误正在该行上跳转: if select_db_flag == True: 下面是我用来从move_right.py调用GoRight函数的代码: import move_right class MyClass(xbmcgui.WindowXML): def GoRight(self):

我需要一些帮助,因为我的当前代码有问题。我试图调用GoRight函数,但它会给我一个错误:AttributeError:“MyClass”对象没有属性“select\u db\u flag”

错误正在该行上跳转:

if select_db_flag == True:
下面是我用来从move_right.py调用GoRight函数的代码:

import move_right

class MyClass(xbmcgui.WindowXML):
    def GoRight(self):
        move_right.GoRight(self)
以下是发现错误的代码:

import datetime
import time
import xbmc
import xbmcgui

prog_id = 0
select_db_flag = False
program_stop_minutes = 0
program_stop_time = 0
epg_time_1 = ''
epg_time_2 = ''
epg_time_3 = ''

def get_programming_times(self):
     if select_db_flag == True:
         select_db_flag = False



 def GoRight(self):
    program_button = [elem.control for elem in self.program_buttons]
    programs_id = list()
    program_width = list()
    positions_X = list()
    positions_Y = list()

    for elem in program_button:
        programs_id.append(elem.getId())
        positions_X.append(elem.getX())
        positions_Y.append(elem.getY())
        program_width.append(elem.getWidth())
    programs_id = map(str, programs_id)
    posX = map(str, positions_X)
    posY = map(str, positions_Y)
    program_width = map(str, program_width)

    for pos_X, pos_Y, prog_id, prog_width in zip(positions_X, positions_Y, programs_id, program_width):
        if int(pos_X) == 375 and int(prog_width) == 1311:
            programs_width = 969
            self.getControl(int(prog_id)).setWidth(int(programs_width))
            program_width = self.getControl(int(prog_id)).getWidth()
            select_db_flag = True
            program_stop_minutes, program_stop_time, epg_time_1, epg_time_2, epg_time_3 = get_programming_times(self)


            if program_stop_time == epg_time_3:
                if program_stop_minutes == '00':
                    if program_width == 969:
                       program_width = 692
我已经在我的代码顶部定义了
select_db
,但是当我得到错误时,它对我没有帮助

您知道我出错的原因吗?您知道如何修复它吗?

替换此:

def get_programming_times(self):
     if select_db_flag == True:
         select_db_flag = False
为此:

def get_programming_times(self):
    global select_db_flag
    if select_db_flag == True:
         select_db_flag = False
每次调用全局变量时都应该使用global,因此在其他函数中可能也需要
global select\u db\u flag

编辑: 评论中的其他问题修复:

def get_programming_times(self):
    global select_db_flag,program_stop_minutes,program_stop_time,epg_time_1, epg_time_2,epg_time_3
    if select_db_flag == True:
        select_db_flag = False
    return program_stop_minutes,program_stop_time,epg_time_1,epg_time_2,epg_time_3
这将修复错误,但可能导致其他错误或返回错误结果


如果您从internet复制代码,请尝试理解它,而不是随机使用它。

您的意图是将
select\u db
作为一个全局变量,还是类特有的变量?此外,如果select\u db\u flag:,请使用
,如果select\u db\u flag==True,请不要使用
非常感谢您的帮助,但是我得到了错误
TypeError:“NoneType”对象是不可移植的
在这段代码中
程序停止时间分钟,程序停止时间,epg时间1,epg时间2,epg时间3=获取编程时间(self)
你知道为什么和如何修复它吗?@user3788310好的,获取编程时间没有返回任何东西,所以这条线毫无意义…我想做的是获取返回信息。知道怎么解决吗?@user3788310我知道该怎么做。我是说没有足够的信息来正确地做这件事。我在上面的编辑中使用了修补程序。但这可能不会使它起作用,我们会在这里呆上几个小时。尝试阅读一些教程并理解代码