3

我正在从“核心python编程第二版”中学习python

我停留在“如何创建类实例”部分。第 84 页。

示例如下:

类.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

在继续之前,我真的很想知道这里发生了什么。希望有人可以帮助我!

提前致谢!:)

4

3 回答 3

4

看起来你还没有缩进你的类的方法。使用以下代码:

class FooClass(object):
    ...

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

您正在声明一个名为的类FooClass和一个名为 的函数__init__。该类将有一个默认的空构造函数。如果您将其缩进为:

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

您有一个FooClass将该__init__方法作为构造函数的类。

于 2013-03-01T11:43:49.167 回答
3

好吧,我也在学习 python,我也在参考这本书,但我的书是第 1 版。但是,我从您的代码中分析的是它没有正确缩进。请正确检查并希望它可以正常工作。谢谢。

于 2013-03-01T11:50:35.103 回答
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

以此类推其他方法。

于 2013-03-01T11:43:34.993 回答