自动检测传递给它的另一个属性的名称的描述符?
描述符可以自动检测传递给它的对象的名称吗?
class MyDecorator( object ):
def __init__(self, wrapped):
# Detect that wrapped's name is 'some_attr' here
pass
class SomeClass( object ):
some_attr = dict()
wrapper = MyDecorator( some_attr )
Can a descriptor auto-detect the name of an object passed to it?
class MyDecorator( object ):
def __init__(self, wrapped):
# Detect that wrapped's name is 'some_attr' here
pass
class SomeClass( object ):
some_attr = dict()
wrapper = MyDecorator( some_attr )
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不,不是真的。您可以通过调用框架的内省来破解一些东西,但这不是一个很好的或强大的解决方案。 (如果 SomeClass 有两个描述符,
some_attr=MyDecorator()
和someother_attr=some_attr
,你会怎么做??)最好明确一点:
No, not really. You can hack something together with introspection of call frames, but it's not a nice -- or robust -- solution. (What would you do if SomeClass had two descriptors,
some_attr=MyDecorator()
andsomeother_attr=some_attr
??)It's better to be explicit:
(为后代回答我自己的问题。)
这是迄今为止我想到的最好的:
(Answering my own question for posterity.)
This is the best I've come up with so far: