2017-09-25 36 views
0

請引導到一個解釋=類() 和 VAR =類方法返回一個類:什麼是 對象之間的差的返回之間的準確差值的類和對象

class Countsome(object): 
    @classmethod 
    def get(cls, x, y): 
     self = cls() 
     sum = self.add2(x, y) 
     print sum 
     return cls 

    def add2(self, x, y): 
     sum = x+y 
     return sum 

xyz = Countsome.get(5, 9) 

== ============================================================

class CountSome(object): 
    def __init__(self): 
     pass 

    def add2(self, x, y): 
     sum = x+y 
     print sum 


xyz = CountSome() 
xyz.add2(5, 9) 

尋求理解在那裏我應該使用一個,我只是打印總和,所以不會返回,所以請假設我問這個問題的這些類型的任務(返回結果如總和並不重要)。 並尋找答案,如何,哪一個會是有效的,什麼時候。

每種方案的最大優點和最適合每種方案的優點是什麼?如果可能的話,指導一個來源

+0

歡迎發表評論與-ve票 – PradyJord

+0

你是什麼意思返回一個類?在你的第一個代碼塊中,你使用'classmethod',其中第二個只是一個常規的實例方法,不必是一個實例方法 – Vinny

回答

0

你有點兒錯了。 類方法應該是使用的時候你需要執行並不需要實例,但確實需要cls對象操作:

類方法接收類作爲隱含的第一個參數,就像一個實例方法接收實例。

例如,如果在您的類中有一個COUNTER對象,該對象將計算實例化了多少實例。

第二個代碼實際上是使用staticmethod;這是一個在類中定義的方法,但不需要訪問任何類/實例屬性。 staticmethod可以定義在一個類的外部,但爲了方便而存在於其中

+0

我沒有看到任何東西** staticmethod **在問題 – kip

+0

'add2'可以聲明爲** staticmethod **,因爲它不會做與對象有關的任何事情;實際上,如果你使用的是pycharm,它會表明這一點 – Vinny

相關問題