2015-11-03 86 views
2

我要定義一個方法的屬性:OOP屬性定義

class variables: 
    def definition(self): 
     self.word = "apple" 

然後我想使用已定義的屬性:

test = variables() 
print test.definition.word 

而不是寫'apple'我得到一個錯誤:

Traceback (most recent call last): 
    File "bezejmenný.py", line 6, in <module> 
    print test.definition.word 
AttributeError: 'function' object has no attribute 'word' 
+0

應是**兩條獨立的行** - 調用方法('test.definition()')*然後*訪問它創建的屬性('print test.word')。你應該真的遵循結構化的Python OOP教程,這是非常基本的東西。你也不符合[風格指南](http://www.python.org/dev/peps/pep-0008/),在'__init__'之外創建一個新的屬性是一種糟糕的形式。 – jonrsharpe

回答

3
  1. definition is am

    • 它是:ethod所以你需要執行它
    • 因爲您要指派給自變量,就可以按如下

      test = variables() 
      test.definition() 
      print test.word 
      

一些想法通過您的實例訪問最佳做法以大寫字母開頭名字

  • 如果您只希望您的班級擁有一個字段,則不需要您的definition方法
  • 擴展您的類object因爲一切在巨蟒的對象(只蟒蛇2.x的)

    class Variables(object): 
        def __init__(self): 
         self.word = 'I am a word' 
    
    variables = Variables() 
    print variables.word 
    
  • +0

    現在'word'是一個* class屬性*,它與*實例屬性*有細微的差別。值得注意的是,'object'只在2.x中被需要,並且舊樣式的類仍然是一個對象(它只是不是一個「對象」 - 困惑了嗎?) – jonrsharpe

    +0

    @jonrsharpe true :) –

    +0

    我寫了定義方法因爲我用它作爲例子。最初我從事加載圖像並保存它們的方法(而不是函數,經驗教訓)。 –

    2

    ,您可以訪問實例屬性是這樣的:

    test = variable() 
    test.definition() 
    print test.word