BIG陽(yáng)
2019-02-17 05:46:36
擴(kuò)展類(lèi)繼承自基類(lèi)的一個(gè)方法行為,然后如果想要把基類(lèi)的這個(gè)行為重新執(zhí)行一遍,在自己的這個(gè)行為前面加上基類(lèi)的引用,super后面為啥要加一個(gè)括號(hào)呢?直接寫(xiě)super.working()就報(bào)錯(cuò)了。。
而且,這里寫(xiě)基類(lèi)的名字,Employee().working()也會(huì)報(bào)錯(cuò)。。只能用super().working(),為啥啊。。
代碼如下:
class Employee:
def __init__(self,name,department,title,salary):
self.name = name
self.department = department
self.title = title
self.salary = salary
def __repr__(self):
return f'員工:{self.name}'
def working(self):
print(f'員工{self.name}在工作...')
class Developer(Employee):
def __init__(self,name,department,title,salary,skills):
Employee.__init__(self,name,department,title,salary)
self.skills = skills
def working(self):
super().working()
print('開(kāi)發(fā)人員在工作')
class Accountant(Employee):
def __init__(self,name,department,title,salary,certification):
Employee.__init__(self,name,department,title,salary)
self.certification = certification
if name == '__main__':
d = Developer('tom','技術(shù)部','高級(jí)工程師','13000',['python','flask'])
print(d.name)
d.working()
3 回答

慕的地8271018
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
- super后面為啥要加一個(gè)括號(hào)?
super是一個(gè)函數(shù),函數(shù)的調(diào)用就需要加括號(hào),直接super.working()相當(dāng)于調(diào)用super這個(gè)對(duì)象的working方法,而它沒(méi)有這個(gè)方法,所以會(huì)報(bào)錯(cuò)。 - Employee().working()報(bào)錯(cuò),Employee().working()是實(shí)例化一個(gè)類(lèi)之后,調(diào)用這個(gè)類(lèi)的working方法,實(shí)例化Employe需要傳入name,department,title,salary這幾個(gè)參數(shù),改成Employee(name=xxx, department=xxx, title=xxx, salary=xxx).working()就可以了。

烙印99
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
后面加括號(hào)的是調(diào)用對(duì)象的方法,后面不加括號(hào)的是調(diào)用對(duì)象的屬性
記住這兩點(diǎn),想清楚是調(diào)用屬性還是調(diào)用方法,就不會(huì)弄錯(cuò)了.

慕桂英4014372
TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超13個(gè)贊
1.super用于實(shí)例化一個(gè)對(duì)象用于調(diào)用實(shí)例方法
2.你那里調(diào)用基類(lèi)無(wú)效是因?yàn)閣orking是一個(gè)實(shí)例方法,你如果用初始化參數(shù)傳進(jìn)類(lèi)生成一個(gè)實(shí)例,你那樣用基類(lèi)調(diào)用應(yīng)該也是ok的
添加回答
舉報(bào)
0/150
提交
取消