类与对象:
1、以下类定义中哪些是类属性,哪些是实例属性?
class C:
num = 0
def __init__(self):
self.x = 4
self.y = 5
C.count = 6
num = 0、C.count = 6 为类的属性,
self.x=4、 self.y=5 为实例属性
2、怎么定义私有⽅法?
函数名前加上“__”两个下划线
3、尝试执行以下代码,并解释错误原因:
class C:
def myFun():
print('Hello!')
c = C()
c.myFun()
错误原因:在类中实现类的实例化
4、按照以下要求定义一个游乐园门票的类,并尝试计算2个成人+1个小孩平日票价。
要求:
- 平日票价100元
- 周末票价为平日的120%
- 儿童票半价
class Ticket():
def __init__(self,weekday=True,adult_num,child_num):
price=100 * adult_num + 50 * child_num
if weekday:
self.adult_num = adult_num
self.child_num = child_num
self.price = price
else:
self.price=1.2 * p
def price(self):
print("总票价为 %d" % self.price)
bill=Ticket()
weekday=True
adult_num = 2
child_num = 1
bill.price()
1、上面提到了许多魔法方法,如__new__
,__init__
, __str__
,__rstr__
,__getitem__
,__setitem__
等等,请总结它们各自的使用方法。
__new__
:对象实例化时调用的第一个方法,至少需要一个参数cls,此参数代表要实例化的类。该方法对当前类进行实例化,并将当前类返回,传至 init 的 self 中。
__init__
:类实例化时自动调用
__str__
:当打印一个对象,使用%s格式化或者强制转换时候触发
__rstr__
:没有这个
__getitem__
:定义获取容器中元素的行为
__setitem__
:定义设置容器中制定元素的行为
2、利用python做一个简单的定时器类
要求:
- 定制一个计时器的类。
start
和stop
方法代表启动计时和停止计时。- 假设计时器对象
t1
,print(t1)
和直接调用t1
均显示结果。 - 当计时器未启动或已经停止计时时,调用
stop
方法会给予温馨的提示。 - 两个计时器对象可以进行相加:
t1+t2
。 - 只能使用提供的有限资源完成。