Python论坛  - 讨论区

标题:[python-chinese] 关于 类的数据成员

2006年09月29日 星期五 10:33

Black Sands ( Li Ying Min ) fred.li.1979.m.bj.prc在gmail.com
星期五 九月 29 10:33:18 HKT 2006

如果数据成员不是在 __init__(self) 中初始化的,那么与后面这种方式有什么区别?


class ZDAParser(Parser):
      formatter = 'ZDA'
      channels = {}
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: http://python.cn/pipermail/python-chinese/attachments/20060929/b15b4906/attachment.html 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年09月29日 星期五 10:43

Kasicass kasicass在gmail.com
星期五 九月 29 10:43:58 HKT 2006

Hi Black Sands,

在 __init__(self) 中定义的是当前这个 instance 的值,而你列出的这个 
(formatter, channels),是属于 ZDAParser 这个 class 的。其实类似 C++ 里面 
的 data member 和 static data member ...

例子:

class FooBar:
	foo = "foo"

	def __init__(self):
		self.val = 1
		print "ctor:", self.foo


print FooBar().val
print FooBar.foo
print FooBar.val   # here will crash



Black Sands ( Li Ying Min ) 写道:
> 如果数据成员不是在 __init__(self) 中初始化的,那么与后面这种方式有什么区别?
>  
>  
> class ZDAParser(Parser):
>       formatter = 'ZDA'
>       channels = {}      
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> python-chinese
> Post: send python-chinese在lists.python.cn
> Subscribe: send subscribe to python-chinese-request在lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request在lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese


-- 
Best regards!

Kasicass/sYcini - Coder
http://www.sycini.com


[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年09月29日 星期五 10:47

陈晓军 chenxiaojun在software.ict.ac.cn
星期五 九月 29 10:47:05 HKT 2006

~ŠæjÛ^­ÈZžw¥²m§ÿðÃ(¡Ú^rG«¢¸ŸÝ<×÷hsö›Êר~œ­†‰ÜŸ÷!Šw¬{÷!×[4êf—m4ëOvôZrDšÛ‰ˆ§€È§ÛM:Óݽ×M½çªr¶'r§zÇ¥ŠËl§+a¢w'§+a¢w!Šw¬z)â¶Ç¥}ÉZ²ÆC ö«±êÏj»­ú+™«mz¶CÈZžw¥°tÌ-DK†Ûiÿúr¶'r銗«™¨¥þœ­†‰Ü†)Þ±ïڶ֜†g§¶ÏöÓN´÷oÓ]ßn¹ý«miÈfz{a¶ip†‹,¹¸ÞrÛj׬۾ԮXm¶Ÿÿ§+a¢w'þ˜©z¹šŠ_éÊØhÈbëý«miÈfz{lÿm4ëOv÷ý7õÝöëŸÚ¶Öœ†g§¶÷

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年09月29日 星期五 11:06

陈晓军 chenxiaojun在software.ict.ac.cn
星期五 九月 29 11:06:03 HKT 2006

†(.ÊÈ^­è¬iìZš™^rV¬°ñHãgjg

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年09月29日 星期五 11:32

limodou limodou在gmail.com
星期五 九月 29 11:32:25 HKT 2006

python是当赋值是来创建变量绑定的。在你的例子中name在开始时在实例中是不存在的,它只存在于类中。因此当你通过实例来访问name时,它首先在实例属性中查找,当找不到时,它会自动到类的属性中查找。因此你开始看到的是类的属性,通过实例给查出来了。但在后面你给
cxj.name赋值 ,这样就创建了一个新的实例属性,而类中的属性就被屏蔽掉了。

-- 
I like python!
UliPad <>: http://wiki.woodpecker.org.cn/moin/UliPad
My Blog: http://www.donews.net/limodou

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号