用__new__ 主要是想改變原來一些類無法實現的方法,比如有個列表,我想讓它按照我的想要的方式轉換成字符串,那麼就可以這樣寫
class ListToString(str):
def __new__(cls, fruit_list):
fruit_string = ', '.join(fruit_list)
return super(ListToString, cls).__new__(cls, fruit_string)
if __name__ == '__main__':
fruit_list = ['apple', 'banana', 'orange', 'blueberry', 'watermelon']
print ListToString(fruit_list)
apple, banana, orange, blueberry, watermelon
那麼這時候打印出來的就是個字符串了。
用__new__ 是來創建類的實例,必須又返回的東西
而__init__則是實例的構造函數,只是對實例進行一些操作。