Python ';MyClass';对象没有属性';选择"db"u标志';错误
我需要一些帮助,因为我的当前代码有问题。我试图调用GoRight函数,但它会给我一个错误:AttributeError:“MyClass”对象没有属性“select\u db\u flag” 错误正在该行上跳转: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):
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我知道该怎么做。我是说没有足够的信息来正确地做这件事。我在上面的编辑中使用了修补程序。但这可能不会使它起作用,我们会在这里呆上几个小时。尝试阅读一些教程并理解代码