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(object):
count = "class_properties_count"
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 f"{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")
#实例化对象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
my_range = Simulate_range(1, 9, 1)
for i in my_range:
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)