Python基础知识学习-第8天

本文深入探讨了Python的面向对象编程,包括统计实例化对象数量的机制,如何处理类与实例成员,静态函数的使用,以及在学生录入系统和员工管理系统中的应用。强调了静态方法可以通过@staticmethod装饰器在实例上调用,同时展示了如何通过间接方式(如修改出生日期)而非直接修改来更新对象属性。
摘要由CSDN通过智能技术生成

16-面向对象编程OOP 02

1 假如要统计实例化的对象的个数,应该将统计变量放入类名下面,而不是__init__()的下面。跟具体对象关联的成员放在__init__()下面,否则放在类名下面。

class Book():
    count = 0

    def __init__(self, title, price = 0.0, author = None):
        self.title = title
        self.price = price
        self.author = author
        Book.count += 1

    def __repr__(self):
        print('<图书:{} at 0x{}>'.format(self.title, id(self)))

    def __str__(self):
        print('[图书:{} 价格:{}]'.format(self.title, self.price))

    def print_info(self):
        print(self.title, self.price, self.author)

if __name__ == '__main__':
    book1 = Book('Python', 29.9, 'peter')
    book2 = Book('flask')
    book3 = Book('asp.net')
    print('图书数量:{}'.format(Book.count))
>>>图书数量:3

当删除某个对象时,怎样将统计变量减一:

class Book():
    count = 0

    def __init__(self, title, price = 0.0, author = None):
        self.title = title
        self.price = price
        self.author = author
        Book.count += 1

    def __del__(self):
        Book.count -= 1

    def __repr__(self):
        print('<图书:{} at 0x{}>'.format(self.title, id(self)))

    def __str__(self):
        print('[图书:{} 价格:{}]'.format(self.title, self.price))

    def print_info(self):
        print(self.title, self.price, self.author)

if __name__ == '__main__':
    book1 = Book('Python', 29.9, 'peter')
    book2 = Book('flask')
    book3 = Book('asp.net')
    del(book3)
    print('图书数量:{}'.format(Book.count))
>>>图书数量:2

如果定义了一个属于类的成员而不是属于实例的成员,既可以通过类名来调用,也可以通过实例名来调用:

class Book():
    count = 0

    def __init__(self, title, price = 0.0, author = None):
        self.title = title
        self.price = price
        self.author = author
        Book.count += 1

    # def __del__(self):
    #     Book.count -= 1

    def __repr__(self):
        print('<图书:{} at 0x{}>'.format(self.title, id(self)))

    def __str__(self):
        print('[图书:{} 价格:{}]'.format
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值