Python论坛  - 讨论区

标题:Re: [python-chinese] 各位,还有一个继承的问题请教大家。

2004年05月20日 星期四 16:00

Frank Zheng hust_zxq524 at 263.net
Thu May 20 16:00:25 HKT 2004

把类和对象搞混了

> import threading,time
> import sys
> class mythread(threading.Thread):#继承线程的类
>     def __init__(self):
>         threading.Thread.__init__(self)#继承线程的属性
>         self.running=0#增加一个属性用来判断是否应该结束
> 
> 
> class test:
>     def __init__(self):
>         self.threadobj=mythread()           ### self.threadobj = None
>         self.threadlist=[]
>     def t1(self,count):
>         self.running=1#让线程处于可运行状态
>         i=0
>         while i<10 and self.running==1:
>             i+=1
>             print str(x)+str(i)
>             if i>5:#循环次后,让线程处于中止状态
>                 self.running=0
>         
>     def start(self,x):#启动线程
>         self.threadobj(target=self.t1, args=(x, )).start()    ### self.threadobj = mythread(target=self.t1, args=(x, )).start()
>         self.threadlist.append(self.threadobj)
> 
> test1=test()
> for x in range(5):
>         test1.start(x)
> 
> print '共有线程:',threading.activeCount()
> for k in threading._active.keys():
>     if threading._active[k] in threadlist:
>         threading._active[k].running=0
>         del threading._active[k]
> print '还剩线程: ',threading.activeCount()
> 
> 

----- Original Message ----- 
From: <info at xichen.com>
To: "python-chinese" <python-chinese at lists.python.cn>
Sent: Thursday, May 20, 2004 2:56 PM
Subject: [python-chinese] 各位,还有一个继承的问题请教大家。


> python-chinese,您好!
>       我写的一个多线程程序碰到问题。
>       我的思路是在一个类中继承其他类的方法和属性,然后加以扩充并满足自己的需要,但是运行程序时出现错误。>>> 
> Traceback (most recent call last):
>   File "C:\Documents and Settings\Administrator\桌面\test.py", line 29, in ?
>     test1.start(x)
>   File "C:\Documents and Settings\Administrator\桌面\test.py", line 24, in start
>     self.threadobj(target=self.t1, args=(x, )).start()
> TypeError: 'mythread' object is not callable
> >>> 
> 
> 附上程序,请教各位了。
> 
> # -*- coding: cp936 -*-
> import threading,time
> import sys
> class mythread(threading.Thread):#继承线程的类
>     def __init__(self):
>         threading.Thread.__init__(self)#继承线程的属性
>         self.running=0#增加一个属性用来判断是否应该结束
> 
> 
> class test:
>     def __init__(self):
>         self.threadobj=mythread()
>         self.threadlist=[]
>     def t1(self,count):
>         self.running=1#让线程处于可运行状态
>         i=0
>         while i<10 and self.running==1:
>             i+=1
>             print str(x)+str(i)
>             if i>5:#循环次后,让线程处于中止状态
>                 self.running=0
>         
>     def start(self,x):#启动线程
>         self.threadobj(target=self.t1, args=(x, )).start()
>         self.threadlist.append(self.threadobj)
> 
> test1=test()
> for x in range(5):
>         test1.start(x)
> 
> print '共有线程:',threading.activeCount()
> for k in threading._active.keys():
>     if threading._active[k] in threadlist:
>         threading._active[k].running=0
>         del threading._active[k]
> print '还剩线程: ',threading.activeCount()
> 
> 
> 
> 
>         致
> 礼!
>   
> 
>         info
>         info at xichen.com
>           2004-05-20
> 


--------------------------------------------------------------------------------


> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 

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

2004年05月20日 星期四 16:07

info at xichen.com info at xichen.com
Thu May 20 16:07:19 HKT 2004

liux at gdcn.com,您好! 

  谢谢各位了,问题已经解决了。

======== 2004-05-20 15:41:43 您在来信中写道: ========

----- 原邮件 ----- 
从: "info at xichen.com" <info at xichen.com> 
日期: 星期四, 五月 20日, 2004 下午2:56 
主题: [python-chinese] 各位,还有一个继承的问题请教大家。 
> python-chinese,您好! 
> 我写的一个多线程程序碰到问题。 
> 我的思路是在一个类中继承其他类的方法和属性,然后加以扩充并满足自己的需要,但是运行程序时出现错误。>>> 
> Traceback (most recent call last): 
> File "C:\Documents and Settings\Administrator\桌面\test.py", line 
> 29, in ? 
> test1.start(x) 
> File "C:\Documents and Settings\Administrator\桌面\test.py", line 
> 24, in start 
> self.threadobj(target=self.t1, args=(x, )).start() 
> TypeError: 'mythread' object is not callable 
> >>> 
> 
> 附上程序,请教各位了。 
> 
> # -*- coding: cp936 -*- 
> import threading,time 
> import sys 
> class mythread(threading.Thread):#继承线程的类 
构造函数的参数列表里少东西咯,应该是这样(斜体是后加的)
> def __init__(self, group=None, target=None, name=None, args=(), kwargs={}): 
其实最主要的是这里要改
> threading.Thread.__init__(self, group=None, target=None, name=None, args=(), kwargs={})#继承线程的属性 
> self.running=0#增加一个属性用来判断是否应该结束 
> 
> 
> class test: 
> def __init__(self): 
这里注释掉了一行代码,不需要
#> self.threadobj=mythread() 
> self.threadlist=[] 
> def t1(self,count): 
> self.running=1#让线程处于可运行状态 
> i=0 
> while i<10 and self.running==1: 
> i+=1 
> print str(x)+str(i) 
> if i>5:#循环次后,让线程处于中止状态 
> self.running=0 
> 
> def start(self,x):#启动线程 
这里明显有问题,这样的代码在某些内存管理比较自由的语言里甚至有可能造成内存泄漏。应该修改为
self.threadobj = mythread(target=self.t1, args=(x, ))
self.threadobj.start()
> self.threadobj(target=self.t1, args=(x, )).start() 
上面这行是错的
> self.threadlist.append(self.threadobj) 
> 
> test1=test() 
> for x in range(5): 
> test1.start(x) 
> 
> print '共有线程:',threading.activeCount() 
> for k in threading._active.keys(): 
下面这行也是明显的错误,斜体是后加的
> if threading._active[k] in test1.threadlist: 
> threading._active[k].running=0 
> del threading._active[k] 
> print '还剩线程: ',threading.activeCount() 
> 
> 
> 
> 
>         致 
> 礼! 
> 
> 
>         info 
>         info at xichen.com 
>           2004-05-20 
> 

= = = = = = = = = = = = = = = = = = = = = = 
        致
礼!

              info at xichen.com
              info at xichen.com
               2004-05-20
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20040520/2676de03/attachment.htm

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

2004年05月22日 星期六 11:26

miao wen tomcatwm at hotmail.com
Sat May 22 11:26:51 HKT 2004

ÎÒÏÖÔÚÔÙRH9ÏÂÓÃpython 2.2.X ±àдscript ³ÌÐò ½»»¥Ò»¸ö¼ìË÷ϵͳ¡£
¸Äϵͳ¿ÉÒÔÒÔÒ»¸öÃüÁîÐÐÐÎʽÆô¶¯£¬ÀûÓà ÃüÁîÐУ¬ÔÚshellÀï½»»¥¼ìË÷¡£

±ðµÄͬÃÅÓÐÓÃperl дµÄ£¬¶¼´óͬСÒì¡£
ÎÒÓÃsin,sout = os.popen2('com') 
À´´´½¨×ÓỊ̈߳¬µ÷ÓÃÄǸöϵͳ£¨'com'ÊÇÄǸöϵͳµÄÆô¶¯ÃüÁ֮ºóÓÃfile sin, sout 
¡°ÐéÄâ¡°×ÓÏ̵߳Ästdin and stdout.
Ò»¸ö·Ç³£ÓôÃƵÄÎÊÌâÊÇ£¬ÎÒºÃÏñÎÞ·¨½øÐн»»¥²Ù×÷¡£
¸ù¾ÝÕâ¸ö¶ÔÏóµÄapi£¬ÎÒÕÒµ½µÄ£¬Ö»Óе±sin 
¹Ø±Õºó£¬ÎÒ²ÅÄÜ´Ósout¶Á³ö×ÓÏ̵߳ÄÊä³ö½á¹û¡£ 
ÎÒµÄÌì°¡£¬µ«ÊÇÓеÄʱºòÎÒÐèÒª£¬¶Á³ö×ÓÏ̵߳ÄÊä³ö£¬È»ºóÔÙ×÷Ϊ²ÎÊýÊä»Øϵͳ£¬Íê³É¼ìË÷¡£¿ÉÊÇÒ»µ©ÎҹرÕÁËsin,¾Íû·¨ÔÙ½øÐÐÊäÈë²Ù×÷ÁË¡£
ÄÇôÎÒËƺõÖ»ÄܽøÐС°Ò»¸öÀ´»Ø¡±£­¡°ÊäÈ룭¹Ø±ÕÊäÈ룭¶Á³öÊä³ö¡±
²»ÖªµÀÔÙÆäËûµÄscript 
³ÌÐòÀïÃæÊDz»ÊÇÒ²ÊÇÕâÑù£¿±ÈÈçperl,Èç¹ûÊÇ£¬ÄÇôËûÃÇÊÇÔõô¸ã¶¨ÀàËƵĽ»»¥ÐÔ²Ù×÷µÄ£¿
ÒòΪÔÙ½øÐÐÒ»¸ö²éѯµÄʱºò²»ÄÜÖжÏϵͳ£¨×ÓỊ̈߳©·ñÔò£¬¼ìË÷½á¹û»áÓв»Í¬¡£
»òÕßÎҸɴà¾ÍÓôíÁË£¬Ó¦¸ÃÓÃos.exec ʲôµÄ£¿
лл´ó¼Ò°ïæ

_________________________________________________________________
MSN 8 helps eliminate e-mail viruses. Get 2 months FREE*. 
http://join.msn.com/?page=features/virus



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

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

    你的回复:

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

    Zeuux © 2024

    京ICP备05028076号