最贊回答 / 土斤土斤
?r1?=?Rational(1,?2)?這里是調用了Rational類的__init__方法創(chuàng)建了一個實例,然后將這個實例賦予給了r1;<...code...>這是調用了r1這個實例的__add__方法,self是指實例本身也就是r1,而r這個參數就是指代r2,下文兩個語句是等價的<...code...>從這地方引申出來,假設還有一個r3,那程序是怎么跑的呢<...code...>程序會先算r1+r2,然后再用這個算出的結果x去+r3
2022-12-28
最新回答 / 土斤土斤
查了大量資料,大概是這樣。python3的多繼承采用的是c3算法,將復雜結構上的所有類都映射到一個線性順序上,而這個順序能夠保證所有的類都被構造一次,這個也就是方法搜索的順序mro針對題目中的代碼,mro順序為D→B→C→A,這也就是方法的搜索順序,而每一次執(zhí)行方法的時候,比如執(zhí)行D類的方法,碰到super()后就會跳過接下來的語句而直接往右邊的順序的類中去繼續(xù)搜索方法,所以D類的print語句就會被先跳過,變成搜索B類的方法,而B類的方法中也有super(),所以也是繼續(xù)跳過,直到A類中沒有可以跳過的語...
2022-10-09
最贊回答 / 土斤土斤
這是一種代碼簡寫的方式,稱之為推導式,是通過一行代碼完成循環(huán)判斷,并遍歷出一系列數據的編寫代碼方式。語法為:成員 for 循環(huán) ... if 判斷 ...而例子中的是為推導式中的一種類型,為列表推導式,結果是一個列表:?[item for item in Iterable]所以 result = [item for item in map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])] 是這一段的簡寫:result = []for i in? map(lamb...
2022-07-31