2006年12月07日 星期四 17:28
СµÜ¿ªÊ¼Ñ§Ï°Pythonû¶à¾Ã¡£ÔÚʵÑéÒ»¸öÀý×ÓµÄʱºò¶Ô¶ÔÏóµÄÎö¹¹Ê±»úÒÔ¼°Îö¹¹²úÉúµÄЧ¹û²»ÊǺÜÃ÷°×~´úÂëÈçÏ£º class Person: population = 0 def __init__(self, name): self.name = name print '(Initializing %s)' % self.name Person.population += 1 def __del__(self): print '%s says bye.' % self.name Person.population -= 1 if Person.population == 0: print 'I am the last one.' else: print 'There are still %d people left.' % Person.population def sayHi(self): print 'Hi, my name is %s.' % self.name def howMany(self): if Person.population == 1: print 'I am the only person here.' else: print 'We have %d persons here.' % Person.population swaroop = Person('Swaroop') swaroop.sayHi() swaroop.howMany() kalam = Person('Abdul Kalam') kalam.sayHi() kalam.howMany() swaroop.sayHi() swaroop.howMany() kalam.__del__() kalam.sayHi() kalam.howMany() swaroop.sayHi() swaroop.howMany() ÆäÊä³öµÄ½á¹ûÊÇ£º (Initializing Swaroop) Hi, my name is Swaroop. I am the only person here. (Initializing Abdul Kalam) Hi, my name is Abdul Kalam. We have 2 persons here. Hi, my name is Swaroop. We have 2 persons here. Abdul Kalam says bye. {__del__()º¯Êýrun} There are still 1 people left. Hi, my name is Abdul Kalam. {ÕâÀïµÄKalam²»ÊÇSaybyeÁËô£¿Ôõô»¹ÄÜ˵»°ÄØ£¿} I am the only person here. Hi, my name is Swaroop. I am the only person here. -------------- 下一部分 -------------- Ò»¸öHTML¸½¼þ±»ÒƳý... URL: http://python.cn/pipermail/python-chinese/attachments/20061207/fe386920/attachment.htm
2006年12月07日 星期四 17:41
把 kalam.__del__() 这句改成 del kalam 应该就可以了,系统执行这句时,会自动调用 __del__ 方法,你这种调用方式使得Python 无法删除 kalam 对象,只是执行了此方法而已,不是真正的解构。 hyz wrote:: > 小弟开始学习Python没多久。在实验一个例子的时候对对象的析构时机以及析构产 > 生的效果不是很明白~代码如下: > > class Person: > population = 0 > def __init__(self, name): > self.name = name > print '(Initializing %s)' % self.name > Person.population += 1 > def __del__(self): > print '%s says bye.' % self.name > Person.population -= 1 > if Person.population == 0: > print 'I am the last one.' > else: > print 'There are still %d people left.' % Person.population > def sayHi(self): > print 'Hi, my name is %s.' % self.name > def howMany(self): > if Person.population == 1: > print 'I am the only person here.' > else: > print 'We have %d persons here.' % Person.population > swaroop = Person('Swaroop') > swaroop.sayHi() > swaroop.howMany() > > kalam = Person('Abdul Kalam') > kalam.sayHi() > kalam.howMany() > > swaroop.sayHi() > swaroop.howMany() > kalam.__del__() > kalam.sayHi() > kalam.howMany() > swaroop.sayHi() > swaroop.howMany() > 其输出的结果是: > > (Initializing Swaroop) > Hi, my name is Swaroop. > I am the only person here. > (Initializing Abdul Kalam) > Hi, my name is Abdul Kalam. > We have 2 persons here. > Hi, my name is Swaroop. > We have 2 persons here. > Abdul Kalam says bye. {__del__()函数run} > There are still 1 people left. > Hi, my name is Abdul Kalam. {这里的Kalam不是Saybye了么?怎么还能说话呢?} > I am the only person here. > Hi, my name is Swaroop. > I am the only person here. > > > ------------------------------------------------------------------------ > > _______________________________________________ > 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 -- Vim 中文 Google 论坛 http://groups.google.com/group/Vim-cn
Zeuux © 2025
京ICP备05028076号