在學習Python的是後遇到點小問題,記錄下來以後忘了再來看看。 一. python2 和python3在繼承父類的時候是不同的。super() 是一個特殊的函數,幫助Python將父類和子類關聯起來。在Python3中,直接使用如下代碼: Python3 在Python2中有兩種方法: 第一種 第 ...
在學習Python的是後遇到點小問題,記錄下來以後忘了再來看看。
一. python2 和python3在繼承父類的時候是不同的。super() 是一個特殊的函數,幫助Python將父類和子類關聯起來。在Python3中,直接使用如下代碼:
Python3
class Father():
def __init__(self,make,kkk,aaa)
~~snip~~
class Son(Father):
super().__init__(make,kkk,aaa)
在Python2中有兩種方法:
第一種
class Father():
def __init__(self,make,kkk,aaa)
~~snip~~
class Son(Father):
super(son,self).__init__(make,kkk,aaa)
第二種
class Father():
def __init__(self,make,kkk,aaa)
~~snip~~
class Son(Father):
Father.__init__(self,make,kkk,aaa) # 註意此處參數含self
二. 在運行過程中還遇到了一個問題。
遇到如下的報錯,上網查詢發現是調用對象函數的時候沒有加 () .
<bound method ElectricCar.get_descriptive_name of <__main__.ElectricCar object at 0x0000000003200A90>>
如下:
#encoding=utf-8 class Car(object): def __init__(self,make,model,year): """初始化描述汽車的屬性""" self.make = make self.model = model self.year = year self.odometer_reading = 0
def get_descriptive_name(self): """返回整潔的描述性信息""" long_name = str(self.year) + ' ' + self.make + ' ' + self.model return long_name.title() def read_odometer(self): """列印一條指出汽車裡程的消息""" print("This car has " + str(self.odometer_reading) + " miles o it.") def update_odometer(self,mileage): """將里程錶讀數設置成指定的值""" self.odometer_reading = mileage class ElectricCar(Car): #繼承Car的類 def __init__(self,make,model,year): """初始化父類的屬性""" super(ElectricCar,self).__init__(make,model,year)
my_tesla = ElectricCar('tesla','model s','2016') print(my_tesla.get_descriptive_name)
加了括弧後就運行正常了。
在最後一行:print(my_tesla.get_descriptive_name)改為
print(my_tesla.get_descriptive_name()) 就解決問題了。