python有关Book类、range以及生成器函数的作业

文章介绍了如何在Python中定义一个Book类,包括类属性、对象属性、对象相加操作、打印输出、__call__方法、静态方法和类方法的实现。此外,还模拟了Python内置的range功能,并展示了如何创建一个生成器函数来组合颜色和尺寸的列表。
摘要由CSDN通过智能技术生成

目录

1.定义一个Book类:

2.模拟range的功能:

3.定义一个生成器函数:


1.定义一个Book类:

定义类属性: count        

定义对象属性或变量: title(书名), author(作者), publish(出版社), price(价格)        

定义对象相加操作: book1 + book2 = book1.title + book2.title                   

 举例: book1 + book2 = Java程序设计Python程序设计        

定义打印对象的输出: 使用print打印 book1 => 书的名字-作者-出版社-价格                  

 举例: print(book1) => Python程序设计-吉米勒-机械出版社-35            

定义调用对象的方法:__call__(): 并让其返回书的名字         

定义静态方法: static_print_obj: 执行输出print("This is Static Method of class Book")         

定义类方法: class_print_obj: 执行输出print("This is class Method of class Book ")              

按要求执行底下的操作:      

实例化对象book1: Python程序设计, 王铮, 机械教育出版社, 22    

实例化对象book2:  Java程序设计, 李刚, 清华大学出版社, 34        

执行book1 + book2: 并输出相加的结果        

执行print(book1)        

执行 book1()        

调用类变量,进行赋值100, 输出类变量        

调用book1对象,并修改书名: Python程序设计修改为流畅的Python        

调用静态方法 static_print_obj        

调用类方法 class_print_obj

 代码:

class Book:
    count = None

    def __init__(self, title, author, publish, price):
        self.title = title
        self.author = author
        self.publish = publish
        self.price = price

    def __add__(self, other):
        return book2.title + book1.title

    def __str__(self):
        return self.title + '-' + self.author + '-' + self.publish + '-' + self.price

    def __call__(self, *args, **kwargs):
        return self.title

    @staticmethod
    def static_print_obj():
        print('This  is Static Method of class Book')

    @classmethod
    def class_print_obj(cls):
        print('This is class Method of class Book')

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


book1 = Book('Python程序设计', '王铮', '机械教育出版社', '22')
book2 = Book('Java程序设计', '李刚', '清华大学出版社', '34')

print(book1 + book2)
print(book1)
print(book1())
Book.count = 100
print(Book.count)
book1.title = '流畅的python'
print(book1.title)
Book.static_print_obj()
Book.class_print_obj()
book1.static_print_obj()
book1.class_print_obj()

运行结果:

Java程序设计Python程序设计
Python程序设计-王铮-机械教育出版社-22
Python程序设计
100
流畅的python
This  is Static Method of class Book
This is class Method of class Book
This  is Static Method of class Book
This is class Method of class Book

2.模拟range的功能:

代码:

class MyRange:
    def __init__(self, start=0, stop=None, step=1,):
        if stop is None:
            self.stop = start
            self.start = 0
            self.step = 1
        else:
            self.start = start
            self.stop = stop
            self.step = step
            self.data = -1

    def __iter__(self):
        return self
        # pass

    def __next__(self):
        if self.data < self.stop:
            data = self.start
            self.data = data
            return data

        else:
            raise StopIteration
        pass


MyRange(10)  # -> stop=10, start=0, step=1
MyRange(1, 10)  # -> start=1, stop=10, step=1

for i in range(1, 10, 3):
    print(i)

 运行结果:

1
4
7

3.定义一个生成器函数:

传入两个列表:               

列表1: ["red", "black", "green"]                 

列表2:  ["S", "M", "L"]             

1.调用next返回结果:    调用9次next()            

输出结果:                       

(red, S)                       

(red, M)                       

(red, L)                       

........                       

(green, L)             

2.使用循环去访问生成器:                 

输出结果:                       

(red, S)                       

(red, M)                       

(red, L)                       

........                       

(green, L)                 

注意循环终止的条件 

代码:

def color_size(color_list, size_list):
    for color in color_list:
        for size in size_list:
            yield (color, size)


color_list = ['red', 'black', 'green']
size_list = ['S', 'M', 'L']
gen = color_size(color_list, size_list)
#  调用9次next() 
# print(next(gen))
# print(next(gen))
# print(next(gen))
# print(next(gen))
# print(next(gen))
# print(next(gen))
# print(next(gen))
# print(next(gen))
# print(next(gen))

for color_size in gen:
    print(color_size)

运行结果:

('red', 'S')
('red', 'M')
('red', 'L')
('black', 'S')
('black', 'M')
('black', 'L')
('green', 'S')
('green', 'M')
('green', 'L')

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值