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__())
一般我們 自定義的類,用以說明 namespace, class name 和位置.如果要改變__str__方法的回傳值是默認的字串,比如說: [code]<__main__.Mylist object at 0x0071A470>
__str__的回傳值,我們必須要覆寫他.[/code]参考:https://segmentfault.com/q/1010000005110206
相关文章推荐
- 使用HashSet 存储自定义对象,为什么需要重写hashCode()和equals()?
- 自定义View中为什么需要重写onMeasure()方法?
- 为什么重写equals时,需要重写hashCode()方法
- Python 为什么需要使用__name__=='__main__'
- 自定义View相关可以重写的方法及作用 需要注意的事项
- 关于自定义异常中为什么带参构造器需要显示调用父类异常的带参构造器
- python 字符串str需要注意的问题
- object对象重写equals方法时为什么需要重写hashCode方法
- ID的生成策略(hibernate的id生成策略,主键类为什么需要实现序列化接口,同时还要重写hashCode()和equals()方法)
- 自定义layout中需要重写的方法
- iOS-OC为什么需要重写setter或getter方法?
- MVC自定义路由01-为什么需要自定义路由
- Python:Scrapy中重写ImagePipeline组件的file_path函数,自定义图片的路径和名称
- Android 自定义View需要重写ondraw()等方法
- Item 50:为什么需要自定义new和delete?
- 零基础学python-15.1 为什么需要编写函数
- Python学习笔记--为什么需要使用__name__=='__main__'
- 【Java基础之重写equals、hashCode和compareTo方法】什么时候需要重写重写equals方法?为什么重写equals方法,一定要重写HashCode方法?
- 什么时候需要重写equals方法?为什么重写equals方法,一定要重写HashCode方法?
- 1.为什么需要继承?如何继承?继承到什么? 2.方法的重载与重写的区别 3.类型的自动转换和强制转换 4.子类特有的方法的调用规则 5.子类重写的方法的调用规则 6.多态的理解 7.面向对象的三大特征