第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當一個屬性依賴于2個類時,應該在哪個類上定義它?

當一個屬性依賴于2個類時,應該在哪個類上定義它?

有只小跳蛙 2023-07-27 14:21:34
假設我有 2 個課程:Water和Substance。一個或多個Substances 可以溶解在Water; 實例Water具有substances包含實例列表的屬性Substance。a 的擴散常數(shù)Substance取決于Water它所溶解的 a 的屬性以及 aSubstance本身的某些屬性。然后我應該創(chuàng)建一個get_diffusion_constant方法并將Water其實例Substance作為其屬性,還是應該將該方法添加到其參數(shù)的位置Substance?Water或者有完全不同的方法嗎?
查看完整描述

2 回答

?
RISEBY

TA貢獻1856條經(jīng)驗 獲得超5個贊

你寫了:


a 的擴散常數(shù)Substance取決于Water


這讓我們認為擴散常數(shù)是物質(zhì)的特征,因此該類Substance應該擁有允許計算它的方法(使用參數(shù)來提供實例,Water因為它依賴于它)。


這對于大多數(shù)簡單的情況都很有效,如果一個真正的概念擁有一個特征,那么它的模型(在這種情況下是一個類)應該擁有相關的屬性或方法。


一些設計模式和/或更復雜的需求可能有理由打破這個“規(guī)則”以引入更多吸引力。


self另外,回答你的評論:傳遞給函數(shù) 不是問題(至少在我看來) 。self只是對當前實例的引用,沒有什么特別的,只是它是命名當前實例的廣泛尊重的約定,因此也是(實例)方法的第一個參數(shù)。


進一步解釋一下:實例方法必須接受對相關實例的引用作為第一個參數(shù)。按照慣例,這個位置參數(shù)被命名為self,但您可以決定將其命名為this,instance或者無論您想要什么,它都是一樣的。然后您只需在方法中使用正確的參數(shù)名稱即可。


請參閱下面的代碼。它為實例參數(shù)使用了非常糟糕的名稱,但它的工作原理就好像self已經(jīng)被使用過一樣:


class Foo:

    def __init__(current_instance):

        current_instance.bar = 'baz'


    def __str__(this_name_is_ridiculous):

        return this_name_is_ridiculous.bar



print(Foo())  # prints baz


查看完整回答
反對 回復 2023-07-27
?
阿波羅的戰(zhàn)車

TA貢獻1862條經(jīng)驗 獲得超6個贊

我認為Water繼承了一些東西Substance。那么你可以diffusion_constant在每個中都有一個Substance,也可以有一個diffuse帶有一個或多個Substances 的函數(shù)


編輯:


class Water:

     def diffuse(self, *args):

         #check if args is greater 0 or None and then iterate and apply diffusion_constants


class Substance:

      diffusion_constant = 0 #base constant


class Sirup(Substance):

      diffusion_constant = 3


#somewhere later then

corn_sirup = Sirup()

sugary_sirup = Sirup()

water = Water()

water.diffuse(corn_sirup, sugary_sirup)

編輯:由于評論,我更改了代碼。Python 具有鴨子類型,因此只要您的物質(zhì)具有diffusion_constant屬性,就可以訪問它,無論它是什么。然后應該這樣做


查看完整回答
反對 回復 2023-07-27
  • 2 回答
  • 0 關注
  • 125 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號