2017-06-06 47 views
1

我想知道如何(在Python中)引用def中的變量,在類中。例如:如何引用嵌套在主類中的定義變量

class class_name(): 
    . 
    . # Some more definitions in here 
    . 

    def definition_name(): 
     variable_of_interest = 10 # 10 chosen arbitrarily 
    . 
    . # Some more definitions in here 
    . 

if __name__ == '__main__': 
    # Here I want to reference variable_of_interest. Example: 
    if variable_of_interest = 10 
     do stuff 

更妙的是,我怎麼能引用變量主如果示例如下:

class class_name(): 

    def __init__(self): 
     # Some code 
     def _another_definition(): 
      variable_of_interest = 10 

if __name__ == '__main__': 
    #same as before 

所以基本上我怎麼引用放置像類變量()> Def()> Def()>主變量?

+0

它可以在函數中返回嗎?或者是一個類變量? – depperm

+1

變量的範圍有限是件好事。如果你想讓它可訪問,爲它創建一個額外的屬性,比如'self.variable_of_interest'。 – trincot

+0

@depperm我不知道我明白你在問什麼,但是感興趣的變量將在一個類的另一個定義內部的定義內部定義。如果我直接在類內部放置感興趣的變量,那麼我知道我只需要'class_name.variable_of_interest'來獲取值。但是當變量在類中嵌套得更深時,我還沒有想出如何做到這一點。 – BBEng

回答

1

你打電話給def實際上是一個函數,或者在這種情況下是一個類中的方法。

方法中定義的變量通常不可用。這是封裝的整個想法。

如果你想訪問類中的變量,他們應該是類或實例變量。

實例中定義的變量成員需要作爲類實例的一部分進行訪問。它在__init__()中定義。

例如:

class MyClass: 
    def __init__(self): 
     self.data = [] 

訪問的爲:它會被訪問

class MyClass: 
    """A simple example class""" 
    i = 12345 

然後:

x = MyClass() # instantiate an object of this class 
x.data # access instance member 

類變量可以在類定義的頂部被定義與MyClass.i

看看這個Python tutorial on classes更好地理解這一點。

如果你真的想在一個類方法中有一個變量,也可以在主要上下文中直接訪問,那麼你可以通過在global之前使它成爲一個全局變量。否則,變量默認是本地的,只能在相同的範圍內訪問。

+0

所以我不能訪問變量,除非它是一個類變量或成員?我如何訪問該會員? – BBEng

+0

我更新了答案。看看教程鏈接,以獲得這些基礎知識 – MrJLP

+0

@DamianConnors你現在明白了嗎?標記爲回答如果有幫助 – MrJLP