Использование атрибута класса в определении метода в качестве аргумента?
У меня есть следующий код:
class Blah:
ABC, DEF = range(2)
def meth(self, arg=Blah.ABC):
.....
Blah.ABC работает внутри метода или в любом месте снаружи, единственное место, где он не работает - это определение метода!!!
Любой способ решить это???
1 ответ
Пока не используйте имя класса Blah, так как оно еще не закончено. Но вы можете напрямую получить доступ к члену класса ABC, не связывая его с классом:
class Blah:
ABC, DEF = range(2)
def meth(self, arg=ABC):
print arg
Blah().meth()
# it prints '0'
Он также работает с использованием "нового" определения класса стиля, например:
class Blah(object):
ABC, DEF = range(2)
К тому времени, когда я по-настоящему попал в python, новые классы стилей стали нормой, и они намного больше похожи на другие языки OO... так что это все, что я использую. Не уверен, какие преимущества (если есть) в том, чтобы придерживаться старого способа... но это кажется устаревшим, поэтому я бы сказал, что если нет причины, я бы использовал новый стиль. Возможно, кто-то еще может прокомментировать это.