python新手提问

「已注销」 2010-10-27 03:54:09
没学过C++/C#/JAVA,总之对面向对象不感冒...

#!/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()


这是教程中的一个例子,请求帮助:
1、__init__方法中,self.name = name能否改为 name=name(显然不行,why),方法中的域只能这样定义吗?
2、self的作用域,在sayHi方法中,self.name为何不代表自己的一个域?

...全文
226 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2010-10-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 loworth 的回复:]

Python code

def __init__(self, var_name):
self.name = var_name #赋值给对象的name属性
name = var_name # 赋值给方法的私有变量
[/Quote]
谢谢 看代码也该是这样 只是没想明白为什么Python要这么做。
loworth 2010-10-28
  • 打赏
  • 举报
回复

def __init__(self, var_name):
self.name = var_name #赋值给对象的name属性
name = var_name #赋值给方法的私有变量
「已注销」 2010-10-28
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 i_nbfa 的回复:]

不感冒就应该好好学学,不然你怎么写代码呢。
self代表实例对象本身(不是Person类本身)
代码变形下相当于:
Python code

class Person:
def sayHi(self):
print 'Hello, my name is', self.name;
p = Person();
name = 'Swaroop';
p.name = na……
[/Quote]
首先谢谢各位的热心回答。
如i_nbfa所言,self代表实例对象本身,那么这个实例中有没有name成员。(是不是只有两个方法成员)
autumanloo 2010-10-27
  • 打赏
  • 举报
回复
1、__init__方法中,self.name = name能否改为 name=name(显然不行,why),方法中的域只能这样定义吗?
俺也是新手,关于这个:self.name=name 会将name定义为Class Person的所有实体的一个属性,每一个instance会有其不同的值。name=name就只是__init__()这个方法的局部变量复制而已
I_NBFA 2010-10-27
  • 打赏
  • 举报
回复
不感冒就应该好好学学,不然你怎么写代码呢。
self代表实例对象本身(不是Person类本身)
代码变形下相当于:

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

这里self代表实例p
bearnedzq 2010-10-27
  • 打赏
  • 举报
回复
1 name=name 也没有意义啊
虽然你的本意是想将传进来的name赋值给对象里的name,但是不加任何前缀的话,python编译器就糊涂了

2 self表示对象自己
任何引用对象自己的变量,比如name,都要加上 self 前缀的。
iambic 2010-10-27
  • 打赏
  • 举报
回复
name = name是把name复制给自己,从字面上看就是如此,为什么你觉得这种做法也有合理的可能?
self是函数传递进来的一个参数,它的所谓“作用域”,可以看成和普通函数参数一样。什么叫“self.name为何不代表自己的一个域”?
李察德-泰森 2010-10-27
  • 打赏
  • 举报
回复
self 在这里代表 class Person

37,738

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧