理解继承的含义
继承是对象的特性之一
子类会覆盖父类的相同方法,如何使用父类相同的方法
class P:
def __init__(self,name):
self.name=name
class C(P):
def __init__(self,name,age):
self.age=age
#调用父类相同的方法
#super().__init__(name) #单继承
P.__init__(self,name)
掌握继承的实现方法
练习1
请编写“物理学家”的类,并将其作为“理论物理学家”和“实验物理学家”两个类的父类
理解多态的含义
参数的类型是不唯一的
def Add(a,b)
return a+b #a和b可以是整数也可以是字符串
掌握Python实现封装的方法
在变量前加上__ 表示在只能在这个域中可以使用
定制类
class RoundFloat:
def __init__(self,val):
self.value=round(val,2)
def __str__(self):# str:对用户友好(print(r)) repr:解释器友好(r)
return "{0:.2f}".format(self.value)
__repr__=__str__
r=RoundFloat(3.1415926)
print(r)
print(type(r))
控制属性访问
class Bar:
__slots__={'name','age'}#无论实列还是类只能有这两种属性且值不能改变
访问不存在的属性时
class A:
#当访问的属性不存在是会访问__getattr__
def __getattr__(self,name):
print("you user getattr")
def __setattr__(self,name,value):
print("you user setattr")
self.__dict__[name]=value
迭代器和生成器
lst=[1,2,3,4]
hasattr(lst,'__iter__')#返回值为True则该类型可迭代
iter_lst=iter(lst)#生成迭代器
hasattr(iter_lst,'__iter__')#可迭代
hasattr(iter_lst,'__next__')#迭代器的标志
iter_lst.__next__()#读出迭代器中的内容
def y_yield(n):
print("start ")
while n>0:
print("before yield")
yield n #执行到这是将会挂起
n-=1
print("after yield")
yy=y_yield(3)
yy.__next__()#输出结果
#start
#before yield
#3
yy.__next__()#程序接着执行
#after yield
#before yield
#2
gt=(i**2 for i in range(10))#产生生成器
import itertools
print(list(itertools.islice(gt,3)))#读取数据
学习于Python入门到实战星选卡