Python 编写一个Book类实现以下功能

二、编写一个应用程序,完成下列功能:
(1)定义一个类Book,具有1个公有的类属性count,3个私有的实例字段name、price、major分别表示书名、价格、专业;
(2)为此类定义一个构造函数,能实现name参数一定有,但price和major两个参数可不指定的可变参数模式(其中不设置时,默认price=50,major=“无”),每次初始化时count加1;
(3)运行时创建Book类的5本书的对象,并存放在一个列表lst中,一本书为《C#程序设计》、30元、计算机专业,一本书为《计算方法》,一本书为《JAVA面向对象》、69元、计算机专业,一本书为《形势与政策》、16元,最后一本书为《大学英语》、59、基础课;
(4)定义一个rank()函数,能对lst中书按照价格进行排序,其中默认从低到高排序,也可在参数中指定从高到低排序,并在排序后打印每个Book对象的所有信息。

class Book:
    count = 0

    def __init__(self, name, price=50, major="无"):
        self.__name = name
        self.__price = price
        self.__major = major
        Book.count += 1  # 每调用一个构造函数count加1

    def __str__(self):
        return "书名:{},价格:{},主修:{}".format(self.__name, self.__price, self.__major)

    def getPrice(self):
        return self.__price

    @staticmethod
    def rank(lst, isBig=True):
        if isBig:
            lst.sort(key=lambda x: x.getPrice())
        else:
            lst.sort(key=lambda x: x.getPrice(), reverse=True)
        for l in lst:
            print(l)


b1 = Book("《C#程序设计》", 30, "计算机专业")
b2 = Book("《计算方法》")
b3 = Book("《Java 面向对象》", 69, "计算机专业")
b4 = Book("《形式政策》", 16)
b5 = Book("《大学英语》", 69)
booklist = [b1, b2, b3, b4, b5]
Book.rank(booklist,False)
print("一共有{}本书".format(Book.count))

结果如下

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值