简明教程的这里反复都看不明白,请大虾指教~

简明教程的这里反复都看不明白,请大虾指教~

使用__init__方法
例11.3 使用__init__方法

#!/usr/bin/python
# Filename: class_init.py

class Person:
    def __init__(self, name):
        self.name = name
    def sayHi(self):
        print 'Hello, my name is', self.name

p = Person('Swaroop')
p.sayHi()

# This short example can also be written as Person('Swaroop').sayHi()

(源文件:code/class_init.py)

输出
$ python class_init.py
Hello, my name is Swaroop

它如何工作
这里,我们把__init__方法定义为取一个参数name(以及普通的参数self)。在这个__init__里,我们只是创建一个新的域,也称为name。注意它们是两个不同的变量,尽管它们有相同的名字。点号使我们能够区分它们。

最重要的是,我们没有专门调用__init__方法,只是在创建一个类的新实例的时候,把参数包括在圆括号内跟在类名后面,从而传递给__init__方法。这是这种方法的重要之处。

现在,我们能够在我们的方法中使用self.name域。这在sayHi方法中得到了验证。


看书看到这里的时候,对于“对象”,“方法”“域”这些专用术语,对于__init__方法的用法真是弄不明白,请哪位大虾能用简洁明了的说明方法来解释一下,感谢~
还有,我是用强背的方式来学这些例子的,在看见例子尾部的Person()里是有参数'Swaroop'的,但如果我在类名那里加上这个参数的时候就是如下错误:
TypeError: Error when calling the metaclass bases
    str() takes at most 1 argument (3 given)
为什么不能在类名那里加上这个参数呢?
贴你的代码出来
class Person('Swaroop'):
        def __init__(self, name):
                self.name = name
        def sayHi(self):
                print 'Hello, my name is %s' % self.name
p = Person('Swaroop')
p.sayHi()

报错:
    class Person('Swaroop'):
TypeError: Error when calling the metaclass bases
    str() takes at most 1 argument (3 given)


QUOTE:
原帖由 zxfyaye 于 2007-1-6 00:49 发表
class Person('Swaroop'):
        def __init__(self, name):
                self.name = name
        def sayHi(self):
                print 'Hello, my name is %s' % self.name
p = Person('Swaroop')
p.sayHi()

报错:
    class Person ...

在类的定义当中是不能用参数的吧,还有()


QUOTE:
原帖由 zxfyaye 于 2007-1-6 00:49 发表
class Person('Swaroop'):
        def __init__(self, name):
                self.name = name
        def sayHi(self):
                print 'Hello, my name is %s' % self.name
p = Person('Swaroop')
p.sayHi()

报错:
    class Person ...

class Person(Human) 表示类 Person 继承类 Human
class Person('Swaroop') 语义不正确
如果你想加 name的默认参数 应该是 
class Person:
        def __init__(self, name='Swaroop'):
                self.name = name
        def sayHi(self):
                print 'Hello, my name is %s' % self.name
p = Person()
p.sayHi()
谢谢各位大虾,明白了~