python的構造方法


構造方法與其他普通方法不同的地方在於,當一個對象被創建后,會立即調用構造方法。

在python中創建一個構造方法很簡單,只需要把init方法的名字從簡單的init修改為魔法版本__init__即可。

class foobar:

  def __init__(self):

    self.somevar = 42

>>> f = foobar()
>>> f.somevar
42

如果給構造方法傳遞幾個參數的話,會怎么樣呢?

>>> class foobar:
...     def __init__(self, value = 42):
...             self.somevar = value
...
>>> f = foobar('this is a test')
>>> f.somevar
'this is a test'

**************************************************************************

 重寫一般方法和特殊的構造方法

每個類都可能有一個或者多個超類,它們從超類那里繼承行為方式,如果一個方法在b類的一個實例中被調用,但在b類中沒有找到該方法,那么就去它的超類a里面找

class a:

  def hello(self):

    print "hello,i'am a."

class b(a)

a類定義了一個叫做hello的方法,被b類繼承,下面是一個說明類是如何工作的列子

>>>A = a()

>>>B = b()
>>>A.hello()hello,i'am a

>>>B.hello()

hello,i'am a

因為b類沒有定義自己的hello方法,所以當hello被調用的時候,原始的信息就被打印出來。

在子類中增加功能的最基本的方法就是增加方法,但是也可以重寫一些超類的方法來自定義繼承的行為。b類也能重寫這個方法,比如下面的列子中b類的定義被修改了。

class b(a):

  def hello(self):

    print "hello,i'am b."

重寫是繼承機制中的一個重要內容,對於構造方法尤其重要,構造方法用來初始化新創建的對象的狀態,大多數子類不僅要擁有自己的初始化代碼,還要擁有超類的初始化代碼,雖然重寫的機制對於所有方法來說都是一樣的,但是當重寫構造方法和普通重寫方法更容易遇到特別的問題,比如,如果一個類的構造方法被重寫,那么就需要調用超類的構造方法,否則,對象可能不會被正確的初始化。

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM