name

name

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

这两个name怎么理解?
新手,请莫见笑。
它如何工作
    这里,我们把__init__方法定义为取一个参数name(以及普通的参数self)。在这个__init__里,
我们只是创建一个新的域,也称为name。注意它们是两个不同的变量,尽管它们有相同的名
字。点号使我们能够区分它们。
    最重要的是,我们没有专门调用__init__方法,只是在创建一个类的新实例的时候,把参数包
括在圆括号内跟在类名后面,从而传递给__init__方法。这是这种方法的重要之处。
现在,我们能够在我们的方法中使用self.name域。这在sayHi方法中得到了验证。
    给C++/Java/C#程序员的注释
__init__方法类似于C++、C#和Java中的 constructor 。

看不懂
__init__(self, name)这里的name是初始化对象时候传入的参数,而下面的self.name则是类内部变量。不知道你学过java或者php,可以简单的理解为里面的this。

public class Hello {
    String name;
    public Hello(String name) {
         this.name = name;
    }
}
就是__init__(self, name)在生成类的实例的时候,把传给类的 name变成对象的name变量,这样理解可不可以?


QUOTE:
原帖由 yanhekib 于 2008-11-13 13:34 发表
就是__init__(self, name)在生成类的实例的时候,把传给类的 name变成对象的name变量,这样理解可不可以?

可以,而且这两个名字可以不同。
创建对象 跟JAVA constructor 一个道理