Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 4, 2014 07:45:51

BossBox
Зарегистрирован: 2014-02-23
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Не определяется глобальная переменная заданная в классе

from Avatar import PlayerAvatar
class AAA(object):
	def __init__(self):
		pass
	
	pre_onEnterWorld_init = PlayerAvatar.onEnterWorld
	pre_onLeaveWorld_init = PlayerAvatar.onLeaveWorld
	def new_onEnterWorld_init(current, prereqs):
            pre_onEnterWorld_init(current, prereqs)
            self.currentPlayer = BigWorld.player()
	
	def new_onLeaveWorld_init(self):
		pre_onLeaveWorld_init(self)
	PlayerAvatar.onEnterWorld = new_onEnterWorld_init
	PlayerAvatar.onLeaveWorld = new_onLeaveWorld_init
AAA()

В итоге ругается на:

*** File "", line 34, in new_onEnterWorld_init
*** NameError: global name 'pre_onEnterWorld_init' is not defined

Отредактировано BossBox (Сен. 4, 2014 07:47:16)

Офлайн

#2 Сен. 4, 2014 08:20:10

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не определяется глобальная переменная заданная в классе

Внутри метода ты имеешь объект, а pre_onLeaveWorld_init описана в пространстве имен класса.
То есть обращаться к ней нужно через объект

self.pre_onLeaveWorld_init(self)



Офлайн

#3 Сен. 4, 2014 08:50:34

BossBox
Зарегистрирован: 2014-02-23
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Не определяется глобальная переменная заданная в классе

class AAA(object):
	onEnterWorld_init = PlayerAvatar.onEnterWorld
	onLeaveWorld_init = PlayerAvatar.onLeaveWorld
	def new_onEnterWorld_init(cur, prereqs):
		sel.onEnterWorld_init(sel, prereqs)
	PlayerAvatar.onEnterWorld = new_onEnterWorld_init
	PlayerAvatar.onLeaveWorld = new_onLeaveWorld_init
AAA()

*** Traceback (most recent call last):
*** File “”, line 32, in new_onEnterWorld_init
*** NameError: global name ‘sel’ is not defined

Отредактировано BossBox (Сен. 4, 2014 08:53:42)

Офлайн

#4 Сен. 4, 2014 09:00:42

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не определяется глобальная переменная заданная в классе

Как-то не ожидаешь увидеть незнание основополагающих принципов языка от человека, изучающего его минимум полгода.

def new_onEnterWorld_init(current, prereqs):
pre_onEnterWorld_init(current, prereqs)
self.currentPlayer = BigWorld.player()

Объяснять вам, что такое self, и зачем он нужен, не буду из принципа.



Отредактировано FishHook (Сен. 4, 2014 09:01:04)

Офлайн

#5 Сен. 4, 2014 09:04:12

BossBox
Зарегистрирован: 2014-02-23
Сообщения: 56
Репутация: +  0  -
Профиль   Отправить e-mail  

Не определяется глобальная переменная заданная в классе

Сообщение предыдущие еще раз посмотрите, вы не тот код мне показываете.

Офлайн

#6 Сен. 4, 2014 09:08:59

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не определяется глобальная переменная заданная в классе

ОК, вот нужный код.
Если вы мне немедленно не объясните, где вы определяете переменную sel, перед тем как использовать, забаню нафиг.

class AAA(object):
	onEnterWorld_init = PlayerAvatar.onEnterWorld
	onLeaveWorld_init = PlayerAvatar.onLeaveWorld
	def new_onEnterWorld_init(cur, prereqs):
		sel.onEnterWorld_init(sel, prereqs)
	PlayerAvatar.onEnterWorld = new_onEnterWorld_init
	PlayerAvatar.onLeaveWorld = new_onLeaveWorld_init



Офлайн

#7 Сен. 4, 2014 20:57:33

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Не определяется глобальная переменная заданная в классе

Не объяснил
Забанен за тупость



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version