2017-03-31 90 views
0

我希望能夠從模塊打印「hello harry」。這是我的模塊(稱爲test23):我可以在沒有__init__的情況下訪問某個類嗎? - Python

class tool: 

    def handle(self,name): 
     self.name = "hello " + name 

這是我的腳本:

import test23 

harry= test23.tool().handle(" harry") 
print harry.name 

我似乎無法打印「你好哈里」我的劇本里閒置。我會如何去做這件事?

+0

此代碼是否PROD是否出現某種錯誤或異常?你可以在你的問題中加入嗎? –

回答

1

tool.handle()沒有返回一個對象,所以你需要存儲的對象調用方法之前:

import test23 

harry = test23.tool() 
harry.handle("harry") 
print harry.name 
+0

完美!非常感謝你! – semiflex

3

handle不返回任何東西,所以harry將是NoneType。 做它在兩次:第一次分配的實例,然後調用方法:

>>> class tool: 
... def hello(self,name): 
...  self.name="hello "+name 
... 
>>> a=tool() 
>>> a.hello('i') 
>>> a.name 
'hello i' 
>>> b=tool().hello('b') 
>>> b.name 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'NoneType' object has no attribute 'name' 
>>> type(b) 
<type 'NoneType'> 
3

我想這會做到這一點。

from test23 import tool 

harry = tool() 
harry.handle("harry") 
print harry.name 
1

你想要做的是:

harry = test23.tool() # Ok harry is a tool object 
harry.handle(" harry") # Ok harry.name has been set to " harry" 
print harry.name  # Ok print successfully "hello harry" 

但你做的是:harry= test23.tool().handle(" harry")

讓我們一次看一遍:

  • test23.tool():建立一個新的(臨時)tool對象
  • test23.tool().handle(" harry"):設置該屬性的臨時返回... Nonename
  • harry= test23.tool().handle(" harry"):設置一個臨時tool對象的屬性名稱,設置harryhandle方法,其是None =>相同harry = None

或者,也應該改變handle返回tool對象的返回值:

類工具:

def handle(self,name): 
    self.name = "hello " + name 
    return self 
相關問題