python-language类、对象与魔法方法

13.类与对象
练习题:
1.以下类定义中哪些是类属性,哪些是实例属性?
类属性:类里面方法外面定义的变量称为类属性。
实例属性:实例属性和具体的某个实例对象有关系,并且一个实例对象和另外一个实例对象是不共享属性的。

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

2.怎么定义私有⽅法?
在 Python 中定义私有变量只需要在变量名或函数名前加上“__”两个下划线,那么这个函数或变量就会为私有的了。

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

class C:
    def myFun(): #必须有一个额外的参数名称 应在括号内加self
        print('Hello!')
    c = C()
    c.myFun()

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

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

class Ticket():
      def _init_(self,a,c,d)
          self.price=100
          self.ratio=1
          self.adult=a
          self.child=c
          self.day=d
      def allprice(self)
          if self.day=="weekend"
            self.ratio=1.2
            else self.ratio=1
         cost=(self.adult+self.child*0.5)*self.ratio
         return cost

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

_init_(self[,...]) #实例被创建时调用的初始方法
_new_(cls[,...]) #在调用_init_初始化前,先调用_new_,至少有一个参数cls
_str_(self) #当打印一个对象、使用%s格式化时、str强转数据类型时均触发str
_getitem_(self, key) #定义获取容器中元素的行为,相当于self[key]
_setitem_(self, key, value) #定义设置容器中指定元素的行为,相当于self[key] = value。

你可能感兴趣的:(python-language类、对象与魔法方法)