Python3学习笔记【类与对象】

按照简明教程前面都没有问题,唯独有一段有问题,例11.4

#!/usr/bin/python
# Filename: objvar.py
class Person:
'''Represents a person.'''
population = 0
def __init__(self, name):
'''Initializes the person's data.'''
self.name = name
print '(Initializing %s)' % self.name
# When this person is created, he/she
# adds to the population
Person.population += 1
def __del__(self):
'''I am dying.'''
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):
'''Greeting by the person.
Really, that's all it does.'''
print 'Hi, my name is %s.' % self.name
def howMany(self):
'''Prints the current population.'''
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()

析构函数的执行有问题,按照他这个思路输入后,对象在创建之后直接析构

# -*- coding: utf-8 -*-
"""
Created on Wed May 15 20:39:20 2019

@author: 激光雷达
"""

class Person(object):
    population = 0  
    def __init__ (self,name):
        self.name = name
        print('(Initialing%s)'%self.name)
        self.__class__.population += 1          
    def sayHi(self):
        print('Hi , My name is' , self.name)      
    def howMany(self):
        if self.__class__.population == 1:
            print('I am the only one here')
        else:
            print('We are %d people here .'%self.__class__.population)          
    def __del__(self):        
        self.__class__.population -= 1
        if self.__class__.population == 0 :
            print('%s Say Byebye'%self.name)
            print('I am the last one.')
        else:
            print('%s Say Byebye'%self.name)
            print('There are still %d person.'%self.__class__.population) 
            
liweibing = Person('liweibing')
liweibing.sayHi()
liweibing.howMany()

chenxin = Person('chenxin')
chenxin.sayHi()
chenxin.howMany()

liweibing.sayHi()
liweibing.howMany()

del liweibing
del chenxin

首先需要手动的del,然后把del首行的print放在后面,就可以了

到底为什么,咱也不知道,咱也不敢问

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值