我嘗試了這個繼承代碼并得到了一個意外的輸出。請指導我哪里是我的錯。
兒童.py
from ParentClass import Parent
class ChildImp(Parent):
var2 = 200
def __init__(self):
Parent.__init__(self, 8, 3)
def getData(self):
self.var1 self.Sub() self.Add()
obj = ChildImp()
print(obj.getData())
父類.py
class Parent:
var1 = 100
def __init__(self, a, b):
self.firstNUm = a
self.secondNUm = b
def Add(self):
return self.firstNUm self.secondNUm
def Sub(self):
return self.firstNUm - self.secondNUm
obj1 = Parent(4, 6)
print(obj1.Add())
obj2 = Parent(9, 2)
print(obj2.Sub())
輸出:
10
7
None
Process finished with exit code 0
這個 10 和 7 是從哪里來的?為什么輸出中有一個 None ?
uj5u.com熱心網友回復:
輸出來自以下每個呼叫
10 # print(obj1.Add())
7 # print(obj2.Sub())
None # print(obj.getData())
請注意,Add并且Sub將return計算出的值,btugetData沒有,return因此將隱含地顯示return None為最后的輸出。
請注意,這些Add和Sub行正在執行的原因是因為import陳述句。如果您只希望在直接呼叫該腳本時運行它們,您可以將該塊修改為
if __name__ == '__main__':
obj1 = Parent(4, 6)
print(obj1.Add())
obj2 = Parent(9, 2)
print(obj2.Sub())
uj5u.com熱心網友回復:
輸出來自 3 個列印陳述句。
print(obj1.Add()) # prints 10
print(obj2.Sub()) # prints 7
print(obj.getData()) # prints None
需要回傳 ChildImp getData() 函式,否則回傳 None。
from ParentClass import Parent
class ChildImp(Parent):
var2 = 200
def __init__(self):
Parent.__init__(self, 8, 3)
def getData(self):
return self.var1 self.Sub() self.Add() # <== added return
obj = ChildImp()
print(obj.getData())
if name == __main__在父類中添加檢查也是一種很好的做法,這樣只有被呼叫的類中的 main 才會被執行。
# ParentClass.py
class Parent:
...
if __name__ == '__main__':
obj1 = Parent(4, 6)
print(obj1.Add())
obj2 = Parent(9, 2)
print(obj2.Sub())
uj5u.com熱心網友回復:
10和7是Add和Sub方法的回傳值
None 在那里是因為getData不回傳任何東西
對于所有三個值,都有一個print呼叫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/371200.html
上一篇:從基類引數獲取派生類的屬性
