2012-09-26 62 views
2

在線搜索在這方面的幫助不大。我正在嘗試創建一個帶有幾個類的模塊並對其進行測試。我沒有能夠通過第一部分。 我創建了一個具有3個屬性和他們的getters方法的簡單類,所以我看到他們的屬性來自「主」方法(我猜)我應該如何導入一個班級模塊才能進行測試

我需要創建這個類的一些對象,以便我可以使用後者。

類定義是

class Person: 
    def __init__(self, n, a, s): 
     self.name = n 
     self.age = a 
     self.sex = s 
    def getAge(self): 
     return self.age 
    def getSex(self): 
     return self.sex 

我在test.py文件保存此文件,從我導入但後來我不斷收到同樣的錯誤,當我實例化和對象的外殼

Traceback (most recent call last): 
    File "<pyshell#1>", line 1, in <module> 
    x = Person('myname', 10, 'm') 
NameError: name 'Person' is not defined 

test.py位於C:/Python3.x目錄中,所以我真的不知道這個錯誤。

當我剛剛在shell全班同學和實例化對象的一切作品,但在我的情況是無用的,因爲這些模塊將隨着時間而長勢。

只有當你願意幫忙的時候才能回答,不要把我帶到沒有shell沒有解釋任何東西的教程。我需要使用模塊並理解即將發生的錯誤的含義。

+1

我看到的第一件事就是它應該是'class Person(object)'。但我們應該更多地瞭解你如何進口。 – LarsVegas

+0

您需要使用'import test'(或'from test import *')顯式導入模塊(與其他模塊一樣)。 –

+0

你聽起來像是從Java來的Python(你寫過getter和setter,你指的是一個「主要方法」)。這是一個很好的閱讀:http://dirtsimple.org/2004/12/python-is-not-java.html – chthonicdaemon

回答

6

您的課程應該可能來自object,但這不是錯誤的原因。您可能試圖訪問未明確導入的名稱。您可以導入整個模塊或模塊的名稱。

import test 
test.Person() 

或者

from test import Person 
Person() 

或兩者兼而有之。沒有錯誤,但沒有太多的意義。

您可能會想要輸入from test import *來模仿其他語言的行爲,但在大多數情況下,這在python中被認爲是不好的樣式。顯式比隱式更好。

要了解有關進口工作方式的更多信息,請嘗試import test,然後dir(test)。或者import itertoolsdir(itertools),或下載一些不錯的代碼庫,如Werkzeug,閱讀代碼以查看它的結構,然後嘗試通過REPL進行導航。

+0

感謝您的幫助。問題解決了 – Alberto

相關問題