您的位置:首页 > 其它

Python自定义的类,为什么需要重写__str__

2016-12-07 18:20 423 查看
首先,自定义的类在不继承任何基类的情况下,也具有__str__属性:
class RoundFloatManual(object):
...     def __init__(self, val):
...             assert isinstance(val, float), \
...             "Value must be a float!"
...             self.value = round(val, 2)
rfm = RoundFloatManual(5.590464)dir(rfm)返回:['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__','__weakref__', 'value']
__str__
是 Python 類中的特殊方法,他的回傳值就是使用
str(x)
所得到的值, 而
print(x)
其實就等於是
print(str(x))
.其實再講細一點,當我們呼叫
str(x)
的時候其實是呼叫
x.__str__()
也就是說我們可以這樣想像:
print(x)
===
print(str(x))
===
print(x.__str__())
一般我們 自定義的類
__str__
方法的回傳值是默認的字串,比如說: [code]<__main__.Mylist object at 0x0071A470>
用以說明 namespace, class name 和位置.如果要改變
__str__
的回傳值,我們必須要覆寫他.[/code]参考:https://segmentfault.com/q/1010000005110206
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐