Нет.
Вместо рабочего примера , который позволил бы нам воспроизвести симптом, который вы видите, вы решили предоставить код, который работает как задокументированный и никогда не показывает симптом, оставляя нас дляугадай о своей ситуации.Я прилагаю свое предположение, чуть более длинную версию вашего кода:
def empty():
print('empty')
return ''
class A:
var = empty()
def __init__(self, name):
self.name = name
A.var = name
obj_john = A('John')
print(A.var)
obj_mary = A('Mary')
print(A.var)
Большая разница заключается в регистрации пустых строковых назначений, что, кажется, является вашей главной задачей.Неудивительно, что полученное значение:
empty
John
Mary
То есть, пустая строка была назначена ровно один раз, а затем ctor несколько раз перезаписал синглтон.
Если вы неправильно используете import
sв этом случае вам может удастся дважды вызвать пустое назначение, но вы не описали ни одно из этих взаимодействий.Установка точки наблюдения отладчика может оказаться полезной.Копайте немного дальше и делитесь с нами тем, что вы нашли.