task07:类,对象和魔法方法

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

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

Traceback (most recent call last):
  File "C:\Users\noone\Desktop\111.py", line 1, in <module>
    class C:
  File "C:\Users\noone\Desktop\111.py", line 4, in C
    c = C()
NameError: name 'C' is not defined

报错原因:myFun()少了个self,而且把c=C()和c.myFun()写进了类中,改为:

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

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

要求:

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

class Ticket():
    def __init__(self, man, child, week):
        if not isinstance(man, int) and not isinstance(child, int):
            raise TypeError('type must be int')
        if man < 0 and child < 0 and week not in ['weekday', 'weekend']:
            raise ValueError('value wrong')
        self._man_num = man
        self._child_num = child
        self._week = week
    
    def get_price(self):
        if self._week == 'weekday':
            return 100 * self._man_num + 50 * self._child_num
        else:
            return 120 * self._man_num + 60 * self._child_num

ticket = Ticket(2, 1, 'weekday')
ticket.get_price()

250
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值