如何使Python中父物件有的屬性子物件都有?

2021-07-24 08:21:49 字數 866 閱讀 3586

class soldier ( object ):

def __init__ (self,weapon):

self.weapon = weapon

class marine (soldier):

def __init__ (self,weapon):

pass

mymarine = marine("gun")

print mymarine.weapon#error:mymarine has no attribute weapon

在上例中,定義了乙個soldier類,又定義了乙個它的子類marine類。本來以為,marine作為soldier的子類,那麼soldier有的屬性他都會有,所以初始化的時候什麼都不用做。但事實上,這在python的語法中是錯誤的,至少在python2.7版本中是錯的。

解決這個問題,python2.7的思路是在子類marine初始化的時候,呼叫父類soldier的初始化方法將子物件本身再初始化一遍就可以了。

即:soldier.__init__(self,weapon)。**如下:

class soldier ( object ):

def __init__ (self,weapon):

self.weapon = weapon

class marine (soldier):

def __init__ (self,weapon):

soldier.__init__(self,weapon)

mymarine = marine("gun")

print mymarine.weapon # gun

問題解決!

如何列印出所有的物件?

其實是能實現的,通過get class 函式 複製 mdb new mysql com new common all vars array keys get defined vars sys vars array globals env http env vars post http post va...

python使用pip python如何使用pip

python 2.7.9 或 python 3.4 以上版本都自帶 pip 工具。pip 官網 可以通過以下命令來判斷是否已安裝 pip version sudo python get pip.py 執行安裝指令碼 注意 用哪個版本的 python 執行安裝指令碼,pip 就被關聯到哪個版本,如果是...

Python如何繼承父類 init

如果在子類需要父類的構造方法就需要顯示地呼叫父類的構造方法,或者不重寫的構造方法。型別1 如果子類沒有重寫 init 子類會自動呼叫 init classf def init self,name self.name name print name self.name defgetname self ...