Рассмотрим код в файле my_module.py:Неожиданное поведение при импорте модулей питона с классом Определения
class A(object):
def __init__(self, x=er()):
self.x = x
Теперь, когда я импортировать этот модуль
import my_module
Я получаю сообщение об ошибке,
name 'er is not defined
Хотя я понимаю, что my_module не имеет er
, но я никогда не создаю экземпляр class A
. Поэтому вызывает недоумение то, что python пытается выполнить обратный вызов __init__
при простом импорте модуля. Несмотря на то, то __init__
вызов не полностью выполняется, как описано в примере ниже:
class A(object):
def __init__(self, x=5):
self.x = x
print ('I am here')
Теперь, когда я импортировать модуль - ничего не печатается, и ожидается, что это поведение.
Я озадачен, почему функция er
вызвана в первом примере, когда я не создаю объект class A
. Любые указатели на документацию, которая объясняет это?
В любом случае, 'x' не действует как обратный вызов здесь, если это то, что вы имеете в виду. У вас может быть только параметр 'er', а в' __init__' вы можете сделать 'self.x = er()' –