面向对象编程(class)(2)

理解继承的含义

继承是对象的特性之一
子类会覆盖父类的相同方法,如何使用父类相同的方法

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入门到实战星选卡

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值