亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

在拆分方法中傳遞參數

在拆分方法中傳遞參數

智慧大石 2022-09-06 16:38:05
我需要將類方法拆分為多個文件。功能需要通過,我可以在方法內部傳遞在self中定義的所有變量,并接收在方法內部定義的新self變量。我的嘗試:下面的代碼有效,但我不知道這是否是最佳/正確的解決方案?;A:from calculate_function import functionclass Data():    def __init__(self):        self.y = -2        self.x = 1        self.z, self.result = function(self)calculate_function.py:def function(self):    z = 2    result = z + self.x    return z, result對于上述內容,我在新函數中傳遞 self 以收集所有 init 變量,然后定義新的 self 變量/結果。在不同的文件中將有更多的函數,這些函數將完成一些計算并為類實例創建新變量。問題我需要的是將每個創建的自變量傳遞給每個函數。對于上面的代碼,解決方案是正確定義的,還是有更好的選擇?
查看完整描述

3 回答

?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

如果你想將類代碼的某些部分外部化到外部函數,最好將它們編寫為純函數,并將屬性訪問(甚至更多的屬性更新)保留在類代碼本身中 - 這使得代碼更容易測試,閱讀和維護。在你的情況下,這看起來像這樣:


from calculate_function import function



class Data():

    def __init__(self):

        self.y = -2

        self.x = 1

        self.z, self.result = function(self.x)

calculate_function.py:


def function(x):

    z = 2

    result = z + x

    return z, result

這里的要點是1/您可以立即發現屬性的創建,2/您可以在沒有實例的情況下進行測試。zresultfunction()Data


我需要將類方法拆分為多個文件。


這通常意味著你的班級有太多的責任。它的某些部分可以委托給純函數,如上所示。其他一些需要訪問類屬性的公共子集的部分可以委托給其他較小的專用類 - 但最好使用組合/委派而不是繼承(當然取決于具體的用例)。


查看完整回答
反對 回復 2022-09-06
?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

你不需要在函數內部傳遞self為什么不這樣做:


class Data():

    def __init__(self):

        self.y = -2

        self.x = 1

        self.function()


    def function(self):

        self.z = 2

        self.result = self.z + self.x

是否希望使用另一個 Class 函數或僅使用獨立函數?


查看完整回答
反對 回復 2022-09-06
?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

下面是使用類繼承的解決方案:


-- function1.py --

class FunctionClass1():

     def function1(self):

             self.result = self.x + self.y


-- function2.py -- 

class FunctionClass2():

     def function2(self):

             self.result = self.result + self.z


-- data.py -- 

from function1 import FunctionClass1

from function2 import FunctionClass2 



class Data(FunctionClass1, FunctionClass2):

     def __init__(self):

             self.x = 1

             self.y = 2

             self.z = 3

             self.function1()

             self.function2()


查看完整回答
反對 回復 2022-09-06
  • 3 回答
  • 0 關注
  • 128 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號