3 回答

TA貢獻(xiàn)1809條經(jīng)驗(yàn) 獲得超8個贊
類方法適用于需要具有非特定于任何特定實(shí)例的方法但仍以某種方式涉及該類的方法。關(guān)于它們最有趣的是它們可以被子類覆蓋,這在Java的靜態(tài)方法或Python的模塊級函數(shù)中根本不可能。
如果你有一個類MyClass
,以及一個在MyClass(工廠,依賴注入存根等)上運(yùn)行的模塊級函數(shù),那就把它做成一個classmethod
。然后它將可用于子類。

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個贊
工廠方法(替代構(gòu)造函數(shù))確實(shí)是類方法的經(jīng)典示例。
基本上,類方法適用于任何時候您希望有一個自然適合類的命名空間但不與該類的特定實(shí)例相關(guān)聯(lián)的方法。
例如,在優(yōu)秀的單路模塊中:
當(dāng)前目錄
Path.cwd()
返回實(shí)際的當(dāng)前目錄; 例如,
Path("/tmp/my_temp_dir")
。這是一種類方法。.chdir()
使self成為當(dāng)前目錄。
由于當(dāng)前目錄是進(jìn)程范圍的,因此該cwd
方法沒有與之關(guān)聯(lián)的特定實(shí)例。但是,更改cwd
到給定Path
實(shí)例的目錄應(yīng)該是一個實(shí)例方法。
嗯... Path.cwd()
確實(shí)返回一個Path
實(shí)例,我猜它可以被認(rèn)為是一種工廠方法......
添加回答
舉報