2013-03-01 97 views
3

我正在學習python出「核心python編程第二版」聲明python類,並創建類實例。 (核心Python編程)

我卡在部分「如何創建類實例」。第84頁

的例子如下:

classes.py:

class FooClass(object): 

    """my very first class: FooClass""" 

    version = 0.1 # class (data) attribute 



def __init__(self, nm='John Doe'): 

    """constructor""" 

    self.name = nm # class instance (data) attribute 

    print'Created a class instance for', nm 



def showname(self): 

    """display instance attribute and class name""" 

    print 'Your name is', self.name 

    print 'My name is', self.__class__.__name__ 



def showver(self): 

    """display class(static) attribute""" 

    print self.version # references FooClass.version 



def addMe2Me(self, x): # does not use 'self' 

    """apply + operation to argument""" 

    return x + x 

然後我要創建類實例:

在我的翻譯

我做如下:

Import classes * 
fool = FooClass() 

但沒有任何事情發生。它應該打印init

也當我使用

fool.showname()fool.showver它不打印任何。它說

FooClass'對象有沒有屬性「showver

我真的想知道是什麼回事,我再繼續。 希望有人能幫助我!

在此先感謝! :)

+0

你是用大寫I還是小寫我輸入'import'? – 2013-03-01 11:41:17

+1

你的代碼是如何在文件中縮進的?即'def'行與'class'處於同一級別?如果是這樣,他們不屬於班級,而是功能,而不是方法。 – DSM 2013-03-01 11:42:07

+0

函數實際在類定義中還是它們是分開的? – Volatility 2013-03-01 11:42:14

回答

4

它看起來像你沒有縮進你的課程的方法。用下面的代碼:

class FooClass(object): 
    ... 

def __init__(self, nm='John Doe'): 
    ... 

您聲明瞭一個名爲FooClass類和一個叫做__init__功能。該類將有一個默認的空構造函數。如果改爲縮進它:

class FooClass(object): 
    ... 
    def __init__(self, nm='John Doe'): 
     ... 

你有一個類FooClass__init__方法作爲構造函數。

+0

Thx!它現在正在工作!縮進不僅是錯誤的。我還在所有方法之間留下了空間。 Thx的幫助! :) – Kevinvhengst 2013-03-01 11:57:21

2

您似乎有縮進問題。就像函數中的代碼一樣,條件語句和循環必須縮進以使Python將其視爲「內部」,您的各種類方法需要縮進class ...:行,以便類的一部分而不僅僅是單獨的)函數碰巧在之後定義了它。所以,

class FooClass(object): 

    """my very first class: FooClass""" 

    version = 0.1 # class (data) attribute 



    def __init__(self, nm='John Doe'): 

     """constructor""" 

     self.name = nm # class instance (data) attribute 

     print'Created a class instance for', nm 

等等您的其他方法。

+0

得到它的工作! thxx:D – Kevinvhengst 2013-03-01 11:59:05

3

那麼,我也在學習python,我也指這本書,但我的書是第一版。但是,我從你的代碼分析的是它沒有正確縮進。請檢查正確,希望它能正常工作。謝謝。