python入门训练营—— 类、对象和魔法方法

1、以下类定义中哪些是类属性,哪些是实例属性?

class C:   # Python中的类名约定以大写字母开头
    num = 0    # 属性
    def __init__(self):   # 方法
        self.x = 4
        self.y = 5
        C.count = 6

 

2、怎么定义私有方法?

默认情况下,Python中的成员函数和成员变量都是公开的(public),在python中没有类似public,private等关键词来修饰成员函数和成员变量。在python中定义私有变量只需要在变量名或函数名前加上 ”__“两个下划线,那么这个函数或变量就是私有的了。

私有变量:实例._类名__变量名

class JustCounter:
    __secretCount = 0  # 私有变量
    publicCount = 0  # 公开变量

    def count(self):
        self.__secretCount += 1
        self.publicCount += 1
        print(self.__secretCount)


counter = JustCounter()
counter.count()  # 1
counter.count()  # 2
print(counter.publicCount)  # 2

print(counter._JustCounter__secretCount)  # 2 Python的私有为伪私有
print(counter.__secretCount)  
# AttributeError: 'JustCounter' object has no attribute '__secretCount'


私有方法:实例._类名__方法名()

class Site:
    def __init__(self, name, url):
        self.name = name  # public
        self.__url = url  # private

    def who(self):
        print('name  : ', self.name)
        print('url : ', self.__url)

    def __foo(self):  # 私有方法
        print('这是私有方法')

    def foo(self):  # 公共方法
        print('这是公共方法')
        self.__foo()

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

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

 

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

要求:
- 平日票价100元
- 周末票价为平日的120%
- 儿童票半价

class Ticket:
    def __init__(self,workday=True,adult=True):
        self.price=100
        if workday:
            self.ratio=1
        else:
            self.ratio=1.2
        if adult:
            self.discount=1
        else:
            self.discount=0.5

    def get_price(self,num):
        return self.price*self.ratio*self.discount*num

adult_1=Ticket(workday=True,adult=True)
child_1=Ticket(workday=True,adult=False)

print("2个成人+1个小孩平日票价为:%.2f" %(adult_1.get_price(2)+child_1.get_price(1)))


adult_2=Ticket(workday=False,adult=True)
child_2=Ticket(workday=False,adult=False)

print("2个成人+1个小孩周末票价为:%.2f" %(adult_2.get_price(2)+child_2.get_price(1)))

5. 总结魔术方法的使用方法

 

6. 利用python做一个简单的定时器类

要求:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值