7、类、对象与魔法方法

练习题

(一)类与对象
1、以下类定义中哪些是类属性,哪些是实例属性?

class C:
    num = 0 #类属性
    def __init__(self):
        self.x = 4 #实例属性
        self.y = 5 #实例属性
        C.count = 6

2、怎么定义私有⽅法?
在Python中定义私有变量只需在变量名或函数名前加“_”即可。

3、尝试执行以下代码,并解释错误原因:

class C:
    def myFun():
        print('Hello!')
    c = C()
    c.myFun()

错误原因:myFun()的括号里没有写“self”。

4、按照以下要求定义一个游乐园门票的类,并尝试计算2个成人+1个小孩平日票价。

要求:

平日票价100元
周末票价为平日的120%
儿童票半价

class ticket:
	def _init_(self,p=100,tp=0):
		self.price=p
		self.totalprice=tp
	def cost(self):
		day=int(input("which ticket do you want?"))
		adult=int(input("how much adult tickets do you want?"))
		child=int(input("how much children tickets do you want?"))
		if day in range(1,6):
			self.totalprice=adult*self.price+child*self.price*0.5
			print("the total price is:self.totalprice")
		elif day in range(6,8):
			self.totalprice=adult*self.price*1.2+child*self.price*1.2
			print("the total price is:self.totalprice")
m=ticket()
m.cost()

(二)魔法方法

1、上面提到了许多魔法方法,如__new__,init, str,rstr,getitem,__setitem__等等,请总结它们各自的使用方法。

new(cls[, …]) 在一个对象实例化的时候所调用的第一个方法,在调用__init__初始化前,先调用__new__。

  • new__至少要有一个参数cls,代表要实例化的类,此参数在实例化时由 Python 解释器自动提供,后面的参数直接传递给__init
  • new__对当前类进行了实例化,并将实例返回,传给__init__的self。但是,执行了__new,并不一定会进入__init__,只有__new__返回了,当前类cls的实例,当前类的__init__才会进入。

若__new__没有正确返回当前类cls的实例,那__init__是不会被调用的,即使是父类的实例也不行,将没有__init__被调用。
__new__方法主要是当你继承一些不可变的 class 时(比如int, str, tuple), 提供给你一个自定义这些类的实例化过程的途径。
str(self) 的返回结果可读性强。也就是说,str 的意义是得到便于人们阅读的信息,
repr(self) 的返回结果应更准确。怎么说,repr 存在的目的在于调试,便于开发者使用。

2、利用python做一个简单的定时器类

要求:

定制一个计时器的类。
start和stop方法代表启动计时和停止计时。
假设计时器对象t1,print(t1)和直接调用t1均显示结果。
当计时器未启动或已经停止计时时,调用stop方法会给予温馨的提示。
两个计时器对象可以进行相加:t1+t2。
只能使用提供的有限资源完成。

import time
class timer():
	def _init_(self):
		print()
		self.info="no start"
		self.begin=None
		self.end=None
		self.time=0
	def _str_(self):
		return self.info
	def start(self):
		print("begin")
		self.begin=time.localtime()
	def stop(self):
		if not self.begin:
			print("please call start() first!")
			return
		self.end=time.localtime
		self.time=time.mktime(self.end)-time.mktime(self.begin)
		self.info="run %d seconds" % self.time
		print("it is over!")
		self.begin=None
		return self.time
	def show(self):
		print(self info)
	def _add_(self,other):
		teturn 'run %d seconds' % (other.time + self.time)

t1=timer()
print(t1)
t1.show()
t1.stop()
t1.start()
time.sleep(1)
t1.stop()
print(t1)
t1.stop()
t2=timer()
print(t2)		
t2.start()
time.sleep(3)
t2.stop()		
print(t2)
print(t1+t2)		
内容概要:本文围绕新一代传感器产品在汽车电子电气架构中的关键作用展开分析,重点探讨了智能汽车向高阶智能化演进背景下,传统传感器无法满足感知需求的问题。文章系统阐述了自动驾驶、智能座舱、电动化网联化三大趋势对传感器技术提出的更高要求,并深入剖析了激光雷达、4D毫米波雷达和3D-ToF摄像头三核心新型传感器的技术原理、性能优势现存短板。激光雷达凭借高精度三维点云成为高阶智驾的“眼睛”,4D毫米波雷达通过增加高度维度提升环境感知能力,3D-ToF摄像头则在智能座舱中实现人体姿态识别交互功能。文章还指出传感器正从单一数据采集向智能决策升级,强调车规级可靠性、多模态融合成本控制是未来发展方向。; 适合人群:从事汽车电子、智能驾驶、传感器研发等相关领域的工程师和技术管理人员,具备一定专业背景的研发人员;; 使用场景及目标:①理解新一代传感器在智能汽车系统中的定位技术差异;②掌握激光雷达、4D毫米波雷达、3D-ToF摄像头的核心参数、应用场景及选型依据;③为智能驾驶感知层设计、多传感器融合方案提供理论支持技术参考; 阅读建议:建议结合实际项目需求对比各传感器性能指标,关注其在复杂工况下的鲁棒性表现,并重视传感器整车系统的集成适配问题,同时跟踪芯片化、固态化等技术演进趋势。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值