2015-09-10 54 views
1

我有一個python腳本,由兩個類組成,其中我想調用另一個類的函數內的一個類的函數。結構看起來如下:如何在python腳本中調用B類中的A類函數?

class A(): 
    def funct(arg1, arg2): 
     B.other(arg) 
     ....    
class B(): 
    def other(arg): 
     .... 

所以,請幫助我如何在A類功能內調用B類功能?

+0

你一定要實例化乙並聲明靜態的** other **方法。 PD:其中是** cls **參數? 你也可以看看這個:http://www.jesshamrick.com/2011/05/18/an-introduction-to-classes-and-inheritance-in-python/ – mryuso92

+0

高度相關(也許重複)[staticmethod和classmethod在Python中有什麼區別?](http://stackoverflow.com/questions/136097/what-is-the-difference-between-staticmethod-and-classmethod-in-python)。你也可以檢查[初學者的Python classmethod和staticmethod?](http://stackoverflow.com/questions/12179271/python-classmethod-and-staticmethod-for-beginner) – FallenAngel

回答

-1

使用類方法:

class B(object): 

    @classmethod 
    def other(cls, arg1, arg2): 
     print "I am function class B" 

class A(object): 
    def funct(self, arg1, arg2): 
     B.other(arg1, arg2) 

A().funct(1,2) 

===>I am function class B 

使用靜態方法:

class B(object): 

    @staticmethod 
    def other(arg1, arg2): 
     print "I am function class B" 

class A(object): 
    def funct(self, arg1, arg2): 
     B.other(arg1, arg2) 

A().funct(1,2) 

===>I am function class B 

一些references關於靜態方法和類方法。一類

class B(object): 
    def other(self, arg1, arg2): 
     print "I am function class B" 

class A(object): 
    def funct(self, arg1, arg2): 
     B().other(arg1, arg2) 

A().funct(1,2) 
===>I am function class B 

你可以使用Python繼承裏面

實例化B中。

class B(object): 
     def other(self, arg=None): 
      print "I am function class B" 

    class A(B): 
     def funct(self, arg1, arg2): 
      self.other() 

    a_class_object = A() 
    a_class_object.other() 

===>I am function class B 

也不會原諒爲類方法添加self參數。 您可以在關閉中找到關於繼承的更多信息。 Python的docs

0

試試這個

class A(): 
    def funct(self, arg1, arg2): 
     B().other(arg1) 

class B(): 
    def other(self, arg): 
     print "inside other" 

A().funct('arg1','arg2') 
0

你可以做2種方式

  1. 通過創建對象:如果你想使用A類B類的方法,然後創建對象的在B類內部,如obj = A(),並調用使用參考變量obj(如obj.function())的方法。
  2. 通過繼承:定義類像class B(A)之後,你可以使用B類中的A類的所有方法
0

定義B的方法作爲@classmethod:

class A(object): 
     def funct(self, arg1, arg2): 
      B.other(arg1) 

    class B(object): 
     @classmethod 
     def other(cls, arg1): 
      print "In B: " + arg1 

    A().funct("arg", "arg2") 
相關問題