封装
封装是面向对象的一大特点,就是将属性和方法封装到一个抽象的类中。外界使用类来创建对象,然后让对象调用里面的方法。将对象的方法的细节都封装在类的内部。
多态
多态是不同的子类对象调用相同的父类方法,产生不同的执行结果
多态的前提就是继承和重新父类的方法。多态的好处就是增加代码的灵活度,但是不去影响类的内部设计。
类的约束
当子类继承父类时,必须使用定义在父类中的方法,如果不用父类的方法,就给程序抛出一个异常
class Payment:
def pay(self,money):
raise Exception('你没有用定义好的支付方法')
class QQpay(Payment):
def pay(self,money):
print('你用QQ支付了%s元'%(money))
def pay(a,b):
a.pay(b)
a=QQpay()
pay(a,100)
可以看出子类qq支付继承父类支付的时候,将父类定义好的pay方法,重新定义了,通过这种方式,父类继承下来就不会存在异常。我们可以通过添加一个微信支付来观察区别。
class Payment:
def pay(self,money):
raise Exception('你没有用定义好的支付方法')
class QQpay(Payment):
def pay(self,money):
print('你用QQ支付了%s元'%(money))
class wxpay(Payment):
def fuqian(self,money):
print('你用wx支付了%s元' % (money))
def pay(a,b):
a.pay(b)
a=QQpay()
c=wxpay()
pay(a,100)
pay(c,100)
raise Exception('你没有用定义好的支付方法')
Exception: 你没有用定义好的支付方法
可以看出,通过pay函数,调用到了父类里的方法,最后执行的就是抛出异常。