Если у вас есть следующий класс:
class Foo(object):
def __init__(name):
self.name = name
И вы используете это так в файле с именем check_foo.py
with Foo("naming it"):
print Foo.name
with Foo("naming another"):
print Foo.name
Если вы импортируете check_foo
и запускаете dir(check_foo)
, вы получите только один check_foo.Foo
модуль.
Я знаю, что в PEP 343 упоминается, что вы можете сделать что-то вроде:
with Foo("naming it") as naming_it:
print naming_it.name
И что он будет правильно создан в check_foo
как check_foo.naming_it
, но мой вопрос в том, что можно обойти это и установить имя динамически.
Я играю с доказательством концепции и хочу знать, как далеко я могу продвинуться с вышеупомянутой идеей.
Можно ли назвать экземпляр, используя строку, которую я передаю Foo
?
Примечание: я также знаю о withhacks
. Давайте не будем предлагать мне взглянуть на это:)