2010-05-02 54 views
0

有沒有辦法在__init__部分的類中定義一個值,將它發送到類外的某個變量而不調用類中的另一個函數?定義類之外的信息

class c: 
    def __init__(self, a): 
      self.a = a 
      b = 4   # do something like this so that outside of class c, 
          # b is set to 4 automatically for the entire program 
          # when i use class c 

    def function(self): 
     ...    # whatever. this doesnt matter 

我有具有對於b的不同值的多個類。我只能告訴計算機改變B A名單,但我寧願集B各自類別內

回答

1

我不知道我理解正確的問題,但嘗試加入這一行到__init__

global b 

之前轉讓給b我的意思是。就像函數的第一行一樣。

0

基本上,答案是否定的。您可以創建一個父類來爲您執行回調,然後除了將b值傳遞給父類構造函數之外,您不需要考慮它。但除非你想使用全局變量(這不是一個好主意),否則無法從不是對象的構造函數中返回值。

1

由於globals are bad,嘗試一個類變量。 (是否有任何理由,你不能?)例如:

class C(object): 
    def __init__(self,a): 
     self.a=a 
     C.b=4 

,或者更好的:

class C(object): 
    b=4 
    def __init__(self,a): 
     self.a=a 

global,如doublep建議,將綁定到一個變量全局的模塊。由於它僅限於模塊名稱空間,所以它並不是一個糟糕的選項。