python對象初始化
阿新 • • 發佈:2017-12-28
div cnblogs 添加 有一個 err ast () 之前 ive
當python對象被創建以後,需要將對象進行初始化。Python有一個構造函數和一個初始化函數:
1、構造函數__new__,只接受一個參數,即類本身(它會在對象被構造之前調用,所以這裏也就沒有self參數),所以它返回剛被創建的對象。在日常編程中,很少被用到。
2、初始化函數__init__,常被用到。例如我們在Point類裏添加一個初始化函數,要求用戶在實例化Point對象的時候提供x和y參數。
class Point: def __init__(self, x, y): self.move(x, y) def move(self,x, y): self.x= x self.y = y def reset(self): self.move(0, 0) #構造一個Point point = Point(3, 5) print(point.x, point.y) # 3 5
如果調用Point對象沒有含有合適的初始化參數時,會提示“沒有足夠的參數”等錯誤。如調用上述的Point類,運行如下
>>> a = Point(3) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError:__init__() missing 1 required positional argument: ‘y‘ >>> a = Point(3, 4, 5) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: __init__() takes 3 positional arguments but 4 were given
如果不想讓兩個參數是必須的,通過將初始化函數設置為默認值來實現。如將上處的__init__的代碼修改如下:
classPoint: def __init__(self, x = 0, y = 0): self.move(x, y)
python對象初始化