2013-03-01 56 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,我也指这本书,但我的书是第一版。但是,我从你的代码分析的是它没有正确缩进。请检查正确,希望它能正常工作。谢谢。