Python论坛  - 讨论区

标题:[python-chinese] Çë½ÌÓйØÀà·½·¨µÄÎÊÌâ

2004年09月17日 星期五 21:26

xl g gxl117 at yahoo.com.cn
Fri Sep 17 21:26:37 HKT 2004

大家好:
   
我刚刚开始学Python,有一个关于类方法的问题想问问。指南中说,用户可以向对象添加自己的成员变量,那么我想问这个后加入的变量算类的内部变量还是外部变量?假如有下面的程序:
class A:
    def func(self)
        self.value=8
        print self.value

def exfunc(self,x)
        self.value=7
        print self.value

instance=A()

instance.exfunc=exfunc
那么在这,instance.exfunc应该是的成员变量了,同时它又是一个函数,那么这个函数也应该可以用第一个参数self来引用实例的value了,但实际却不行,要显式的将实例传递给函数,那么这样看来用户自己给对象添加的成员与在类定义时给出的成员还是不同的。
有人能详细讲一下这背后的机制吗?指南在这里讲的也是含含糊糊的,我看的也晕,希望有人能指点一下。

gxl117 敬上!

_________________________________________________________
Do You Yahoo!?
150万曲MP3疯狂搜,带您闯入音乐殿堂
http://music.yisou.com/
美女明星应有尽有,搜遍美图、艳图和酷图
http://image.yisou.com
1G就是1000兆,雅虎电邮自助扩容!
http://cn.rd.yahoo.com/mail_cn/tag/1g/*http://cn.mail.yahoo.com/event/mail_1g/


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

2004年09月17日 星期五 22:08

GreyRoar GreyRoar at tom.com
Fri Sep 17 22:08:09 HKT 2004

nightmarch,您好!

	twisted后面几个例子只在FreeBSD下运行成功,windows下出错是正常的。

======= 2004-09-17 09:58:00 您在来信中写道:=======

>梅劲松:
>  已经安装twisted,我是直接运行finger12.py的,是不是运行方法错了?需要其他的damon工具来运行?
>
>运行方式如下:
>C:\Python23\Lib\site-packages\TwistedDocs\howto\tutorial\listings\finger>finger1
>2.py
>
>
>
>
>On Fri, 17 Sep 2004 09:47:16 +0800, 梅劲松 <stephen.cn at gmail.com> wrote:
>> 先确定你已经安装了Twisted
>> 
>> 
>> On Fri, 17 Sep 2004 09:29:07 +0800, nightmarch <nightmarch at gmail.com> wrote:
>> > 太简单了没有人回答?
>> 
>> 
>> >
>> > On Thu, 16 Sep 2004 14:12:27 +0800, nightmarch <nightmarch at gmail.com> wrote:
>> > > 我在windows环境下运行如下的例子都不成功,运行每个例子时都是没有反应,请问各位这是怎么回事?
>> > >
>> > > C:\Python23\Lib\site-packages\TwistedDocs\howto\tutorial\listings\finger12~~finger17
>> > >
>> > _______________________________________________
>> > python-chinese list
>> > python-chinese at lists.python.cn
>> > http://python.cn/mailman/listinfo/python-chinese
>> >
>>
>_______________________________________________
>python-chinese list
>python-chinese at lists.python.cn
>http://python.cn/mailman/listinfo/python-chinese

= = = = = = = = = = = = = = = = = = = =
			

        致
礼!
 
				 
        GreyRoar
        GreyRoar at tom.com
          2004-09-17






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

2004年09月18日 星期六 15:08

limodou limodou at gmail.com
Sat Sep 18 15:08:44 HKT 2004

类的方法在类创建时是会绑定到这个类上去的,也就是说类的方法包含了类的信息。因此,当生成一个实例时,由于类的方法的绑定,当调用如:obj.func()时,python会找到func()所在的类方法,并将obj作为第一个参数传给func。而你的示例是将一个未在类中定义的方法(因此此方法未与类进行绑定)赋值给了一个实例,因此在调用时,由于此方法未进行绑定,因此无法完成对象的自动传入。

可以将exfunc赋给类A,这样就完成对类的绑定了。如:
A.exfunc = exfunc
这样再调用instance.exfunc就对了。


On Fri, 17 Sep 2004 21:26:37 +0800 (CST), xl g <gxl117 at yahoo.com.cn> wrote:
> 大家好:
> 
> 我刚刚开始学Python,有一个关于类方法的问题想问问。指南中说,用户可以向对象添加自己的成员变量,那么我想问这个后加入的变量算类的内部变量还是外部变量?假如有下面的程序:
> class A:
>    def func(self)
>        self.value=8
>        print self.value
> 
> def exfunc(self,x)
>        self.value=7
>        print self.value
> 
> instance=A()
> 
> instance.exfunc=exfunc
> 那么在这,instance.exfunc应该是的成员变量了,同时它又是一个函数,那么这个函数也应该可以用第一个参数self来引用实例的value了,但实际却不行,要显式的将实例传递给函数,那么这样看来用户自己给对象添加的成员与在类定义时给出的成员还是不同的。
> 有人能详细讲一下这背后的机制吗?指南在这里讲的也是含含糊糊的,我看的也晕,希望有人能指点一下。
> 
> gxl117 敬上!
> 
> _________________________________________________________
> Do You Yahoo!?
> 150万曲MP3疯狂搜,带您闯入音乐殿堂
> http://music.yisou.com/
> 美女明星应有尽有,搜遍美图、艳图和酷图
> http://image.yisou.com
> 1G就是1000兆,雅虎电邮自助扩容!
> http://cn.rd.yahoo.com/mail_cn/tag/1g/*http://cn.mail.yahoo.com/event/mail_1g/
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 



-- 
I like python!

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

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

    你的回复:

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

    Zeuux © 2025

    京ICP备05028076号