Форум сайта python.su
пытаюсь сделать вот так:
__GlobalVar = True
class __Xxx( baseClass ):
def foo( self ):
global __GlobalVar
if __GlobalVar:
print 'v rot mne nogi!'
Офлайн
Зачем вам вообще global понадобился? Все и без него заработает, почитайте о областях видимости переменных.
Офлайн
igor.kaist
из названия темы должно быть очевидно, что я читал про область видимости, но мне “не все ясно”.
в частности, не понятно почему не работают два подчеркивания. почему? можете ответить по существу?
Офлайн
Наверное потому, что двойное подчеркивание внутри класса служит для питона сигналом, что данная переменная является закрытой (private) и к ней применяется name mangling.
http://docs.python.org/tutorial/classes.html#tut-private
Офлайн
Soteric
спасибо!
я когда читал это первый раз, думал что речь идет только о self.__что-то_там
кстати, имхо создатели Питона могли бы и различать глобальные переменные закрытые в модуле от глобальных переменных, закрытых в классах. ничего сложного в этом нет и никаких концепций Питона это не нарушает.
Офлайн
Я бы не говорил столь категорично про сложность.
Лучше бы этих __a не было совсем.
Офлайн
Да и использование глобальных переменных тоже сомнительная практика.
Офлайн
Ferromanкак говорится, всему свое место =)
Да и использование глобальных переменных тоже сомнительная практика.
Офлайн
я вообще не понимаю зачем нужны __ololo и ни разу не видел кода с ними, кроме тестового задания на знание фишек этого самого __ololo
Офлайн
Zubchickну что я могу сказать, за свою программерскую жизнь я многое видел. думаю и вы когда-нибудь увидите использование __ololo =) пока же вы можете просто предположить, что эту возможность не просто так ввели создатели Питона, а значит эта фишка нужна by default.
я вообще не понимаю зачем нужны __ololo и ни разу не видел кода с ними, кроме тестового задания на знание фишек этого самого __ololo
Офлайн