目录
1.定义一个Book类:(20分)
定义类属性: 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):
print(self.title + other.title)
def __str__(self):
return "-".join([self.title, self.author, self.publish, str(self.price)])
# return self.title + "-" + self.author + "-" + self.publish + "-" + str(self.price)
def __call__(self, *args, **kwargs):
print(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")
book1 = Book("Python程序设计", "王铮", "机械教育出版社", 22)
book2 = Book("Java程序设计", "李刚", "清华大学出版社", 34)
book1 + book2
print(book1)
book1()
Book.count = 100
print(Book.count)
# print(book1.count)
book1.title = "Python"
book1()
Book.static_print_obj()
Book.class_print_obj()
# book1.static_print_obj()
# book1.class_print_obj()
2.模拟range的功能
class MyIterator:
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 = 0
def __iter__(self):
return self
def __next__(self):
if self.start < self.stop:
data = self.start
self.start += self.step
return data
else:
raise StopIteration
for i in MyIterator(10, 15, 2):
print(i)
3.定义一个生成器函数:(10分)
传入两个列表:
列表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)
def gen():
args1 = ["red", "black", "green"]
args2 = ["S", "M", "L"]
for i in args1:
for j in args2:
yield i, j
# print(i, j)
gen = gen()
"""
print(next(gen)) gen.__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))
"""
for o in gen:
print(o)