class - distinct classes using `with` in Python -
if have following class:
class foo(object): def __init__(name): self.name = name and use in file called check_foo.py
with foo("naming it"): print foo.name foo("naming another"): print foo.name if import check_foo , run dir(check_foo) single check_foo.foo module.
i know pep 343 mentions can like:
with foo("naming it") naming_it: print naming_it.name and instantiated in check_foo check_foo.naming_it question is possible work around , set name dynamically.
i'm playing around proof of concept , want know how far can above idea.
could possible name instance using string passing foo ?
note: aware withhacks. let's not suggest take @ :)
i'm not sure if sort of hackery looking for...
import inspect class renameable(object): def rename_me(self, new_name): stack_frame in inspect.stack()[1:]: frame_object = stack_frame[0] # frame first object in tuple (name, value) in frame_object.f_locals.iteritems(): if value self: old_name = name matched_frame = frame_object break if matched_frame: break if matched_frame: matched_frame.f_locals[new_name] = matched_frame.f_locals[old_name] del matched_frame.f_locals[old_name] i doubt complete solution, allow change 1 binding of value name. changes name bound value closest call of rename_me. example:
>>> import blah >>> x = blah.renameable() >>> x <blah.renameable object @ 0x1004cb790> >>> x.rename_me('y') >>> x traceback (most recent call last): file "<stdin>", line 1, in <module> nameerror: name 'x' not defined >>> y <blah.renameable object @ 0x1004cb790> >>> i'm not sure if better or worse using withhacks delve seldom explored module in library.
Comments
Post a Comment