风-fmgao

导航

类对象实例计数

练习1:编写一个学生类,产生一堆学生对象, (5分钟)

要求:

  1. 有一个计数器(属性),统计总共实例了多少个对象

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2018/5/31 8:51
# @File    : Person.py

方法一:类中定义一个list,可以实现计数
# class Person:
#     count = []
#
#     def __init__(self, name, age):
#         self.name = name
#         self.age = age
#         self.count.append(self.name)
#
#
# for i in range(10):
#     i = Person('alex', 10+i)
#     print(i.__dict__)
#
# print(i.count)
# print(len(i.count))

方法二: 类中定义一个常数,常数是正常计数,

原因是:

深浅拷贝的问题
可变数据类型list和不可变数据类型str的区别


class Person:
    count = 0

    def __init__(self, name, age):
        self.name = name
        self.age = age
        self.count = self.count + 1 #操作的是每个对象自己的属性,不是类的

  #正确写法:操作的类的属性,类每次实例都会加1

  Person.count += 1




for i in range(10):
    i = Person('alex', 10+i)
    print(i.__dict__)

print(i.count)

posted on 2018-05-31 17:18  风-fmgao  阅读(458)  评论(0编辑  收藏  举报