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

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

以實例為參數(shù)的類

以實例為參數(shù)的類

拉風(fēng)的咖菲貓 2021-07-01 09:05:33
我有以下課程:class Optimization_problem():    def __init__(self, **args):        if 'function' in args:              self.function = args['function']        if 'gradient' in args:              self.gradient = args['gradient']        else:            def deriv(x):                return nd.Gradient(self.function)(x)            self.gradient= deriv        if 'acc' in args:              self.acc = args['acc']我想創(chuàng)建一個Optmization_method從上面的類繼承屬性的類,以便我可以執(zhí)行以下操作:f = lambda x: 100 * (x[1] - x[0] ** 2) ** 2 + (1 - x[0]) ** 2problem = Optimization_problem(function=f, acc=1.e-3)method = Optimization_method(problem) # I want to be able to do this我已經(jīng)嘗試了以下但它不起作用。class Optimization_method(Optimization_problem):        def __init__(self, **args):        Optimization_problem.__init__(self, **args)    #methods......
查看完整描述

1 回答

?
largeQ

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

您只是傳入一個簡單的單個參數(shù)。如果您想復(fù)制屬性,則必須專門尋找這樣的實例并復(fù)制出所需的數(shù)據(jù)。這可以像復(fù)制__dict__映射一樣簡單:


if len(args) == 1 and isinstance(args[0], Optimization_problem):

    self.__dict__.update(args[0].__dict__)

    return

請注意,這與繼承無關(guān);繼承不會讓你從基類復(fù)制狀態(tài)(數(shù)據(jù)),它讓你能夠重用和擴展功能。


如果您想重用特定實例的屬性,只需存儲對 instance 的引用,一個稱為composition的概念:


class Optimization_method:    

    def __init__(self, problem):

        self.problem = problem


    def method1(self,x):

        return self.problem.function(x)

如果您希望Optimization_method實例支持與Optimization_problem. 如果您希望能夠引用當(dāng)前類需要實現(xiàn)的另一個實例的狀態(tài)和功能,請使用組合。


查看完整回答
反對 回復(fù) 2021-07-21
  • 1 回答
  • 0 關(guān)注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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