python:重写访问var
我有一个类:
class A:
s = 'some string'
b = <SOME OTHER INSTANCE>
现在我希望这个类尽可能具有字符串的功能。即:
a = A()
print a.b
将打印 b
的值。但我希望函数需要字符串(例如 replace
)才能工作。例如:
'aaaa'.replace('a', a)
实际执行:
'aaa'.replace('a', a.s)
我尝试覆盖 __get__
但这是不正确的。
我发现你可以通过子类化 str
来做到这一点,但是有没有办法不使用它呢?
I have a class:
class A:
s = 'some string'
b = <SOME OTHER INSTANCE>
now I want this class to have the functionality of a string whenever it can. That is:
a = A()
print a.b
will print b
's value. But I want functions that expect a string (for example replace
) to work. For example:
'aaaa'.replace('a', a)
to actually do:
'aaa'.replace('a', a.s)
I tried overidding __get__
but this isn't correct.
I see that you can do this by subclassing str
, but is there a way without it?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
如果您希望您的类具有字符串的功能,只需扩展内置的字符串类即可。
If you want your class to have the functionality of a string, just extend the built in string class.
我在 使用多个 __init__ 参数子类化 Python 元组 中找到了答案。
我使用了 Dave 的解决方案并扩展了 str,然后添加了一个 new 函数:
I found an answer in Subclassing Python tuple with multiple __init__ arguments .
I used Dave's solution and extended str, and then added a new function:
覆盖
__str__
或__unicode__
以设置对象的字符串表示形式(Python 文档)。Override
__str__
or__unicode__
to set the string representation of an object (Python documentation).