Сравнивая две ветки в Git? [Дубликат]

Это нормально, чтобы ссылаться на имя класса внутри его тела (например, внутри определения метода), если оно действительно находится в области видимости ... Что будет, если оно определено на верхнем уровне. (В других случаях, вероятно, нет, из-за особенностей Python для определения области видимости!).

Для иллюстрации получения лупы, попробуйте создать экземпляр Foo:

class Foo(object):
    class Bar(object):
        def __init__(self):
            self.baz = Bar.baz
        baz = 15
    def __init__(self):
        self.bar = Foo.Bar()

(Он собирается подать жалобу о глобальном имени «Bar» не определяется.)


Кроме того, что-то говорит мне, что вы можете захотеть изучить методы класса: docs для функции classmethod (to использовать в качестве декоратора), соответствующий вопрос SO . Edit: Хорошо, поэтому это предложение может быть не совсем уместным ... Просто первое, что я подумал, когда читал ваш вопрос, было таким, как альтернативные конструкторы и т. д. Если что-то более простое соответствует вашим потребностям, избегать @classmethod странности. : -)

2007
задан Stratus3D 30 April 2015 в 21:05
поделиться