13次作业

1.定义一个Book类:
定义类属性:count
定义对象属性或变量: title(书名),author(作者),publish (出版社),price(价格)
定义对象相加操作: book1 + book2 = bookl.title + book2.title
    举例: book1 + book2 = Java程序设计Pvthon程序设计
定义打印对象的输出:使用print打印 book1 => 书的名字-作者-出版社-价格
    举例: print (book1) => Python程序设计-吉米勒-机械出版社-35
定义调用对象的方法:__call__(): 并让其返回书的名字ca11
定义静态方法: static_print_obj: 执行输出print("This is Static Method of class Book")
定义类方法: class_print_obi: 执行输出print("This is class Method of class Book")
 

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 self.title + other.title
    def __str__(self):
        return self.title + "-" + self.author + "-" + self.publish + "-" + str(self.price)

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

    @staticmethod
    def static_print_obj():
        print("Thia is Static Method of class BOOk")

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

实例化对象bookl:"Python程序设计", "王峥", "机械教育出版社", 222
实例化对象book2:"Java程序设计", "李刚", "清华大学出版社", 34
book1 = Book("Python程序设计", "王峥", "机械教育出版社", 22)
book2 = Book("Java程序设计", "李刚", "清华大学出版社", 34)
执行book1 + book2: 并输出相加的结果
print(book1 + book2)

执行print(book1)
print(book1)
执行 book1()
print(book1())
调用类变量,进行赋值100, 输出类变量
Book.count = 100
print(Book.count)
调用book1对象,并修改书名: Pvthon程序设计修改为流畅的Pvthon
book1.title = "流畅的Python"
print(book1.title)
调用静态方法 static print obj
Book.static_print_obj()
调用类方法 class print obj
Book.class_print_obj()

2.模拟range的功能

class Simulate_range:

    def __init__(self, start, stop, step):
        self.start = start
        self.stop = stop
        self.step = step
        self.current = self.start

    def __iter__(self):
        return self

    def __next__(self):
        if self.current >= self.stop:
            raise StopIteration
        else:
            result = self.current
            self.current += self.step
            return result


range_data = Simulate_range(1, 9, 1)
for i in range_data:
    print(i)

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 test_func(list1, list2):
    for i in list1:
        for j in list2:
            yield (i, j)
 
 
list1 = ["red", "black", "green"]
list2 = ["S", "M", "L"]
 
data = test_func(list1,list2)
print(next(data))
print(next(data))
print(next(data))
print(next(data))
print(next(data))
print(next(data))
print(next(data))
print(next(data))
print(next(data))
 
for item in test_func(list1,list2):
    print(item)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值