【发布时间】:2016-04-26 14:14:42
【问题描述】:
有没有办法将类实例的属性命名空间导入到方法中?
另外,有没有办法直接输出到实例的属性命名空间?
例如,考虑这个简单的代码块:
class Name():
def __init__(self,name='Joe'):
self.name = name
def mangle_name(self):
# Magical python command like 'import self' goes here (I guess)
self.name = name + '123' # As expected, error here as 'name' is not defined
a_name = Name()
a_name.mangle_name()
print(a_name.name)
正如预期的那样,此代码块失败,因为name 未被识别。我想要实现的是方法mangle_name 搜索self 的属性命名空间以查找name(因此在示例中找到'Joe')。是否有一些命令可以导入self的属性命名空间,这样就不会出错,输出是:
>>> Joe123
我知道这可能是不好的做法,但在某些情况下,它会使代码更清晰,而无需大量引用 self.something。如果这是“如此糟糕且永远不应该做”的做法,您能解释一下原因吗?
关于问题的第二部分,我想做的是:
class Name():
def __init__(self,name='Joe'):
self.name = name
def mangle_name(self):
# Magical python command like 'import self' goes here (I guess)
name = name + '123' # This line is different
a_name = Name()
a_name.mangle_name()
print(a_name.name)
此代码返回输出的位置:
>>> Joe123
尝试命令import self 会返回一个找不到模块的错误。
我使用的是 Python 3.5,因此更喜欢 Python 3.5 兼容的答案。
编辑:为了清楚起见。
【问题讨论】:
标签: python methods namespaces instance python-import