python 中没有 接口这个概念
接口类 抽象类 : 制定一个规范
不能被实例化
规范子类当中必须实现某个方法
有原生的实现 抽象类的方法 ,但是 没有原生实现接口类的方法
接口类: 强制 定制 一个规范 ,凡是继承 我的类中的
必须都有 pay()方法 ,如果没有就会报错
e.g
from abc import ABCMeta , abstractmethod
class Payment( metaclass=ABCMeta ) : # 抽象类 (接口类)
@abstractmethod
def pay( self ) : #制定一个规范 必须用pay方式来 写支付方法
pass
@abstractmethod # 制定一个 就添加一个 @ abstractmethod
def func( self ) : # 再制定一个 规范
pass
class Alipay( Payment ) :
def _ _init_ _( self, money ) :
self . money= money
def pay( self ) :
print("使用支付宝支付了%s" % self.money)
class Jdpay( Payment ) :
def _ _init_ _(self,money) :
self . money= money
def pay( self ) :
print(" 使用京东支付了%s " % self.money)
class Wechatpay(Pay) :
def _ _init_ _ (self , money ) :
self.money=money
def pay(self) :
print("使用微信支付了 % s " % self.money)
def pay( obj ) : # 在类的外边 写一个 方法 , 传入的 参数 是 支付方式
obi.pay( ) # 在 支付方式 中 调用 pay() 方法
w1=Wechatpay( 200 ) # 实例化一个对象 自动执行 _ _init_ _
pay( w1 ) #归一化设计
# 将实例化对象 传入 函数 pay 中 在 类中 的 Wecahtpay 中调用 自动执行 _ _init_ _ 执行pay 方法
封装:
广义: 实力化一个对象 给对象空间 封装一些属性
狭义: 私有制
私有成员: 私有静态字段 私有动态方法 私有对象属性
私有成员 是在正常成员前边加 ' _ _ '
私有静态字段: 类的外部 都不能访问
在 本类 中可以 访问 , 在本类方法中 , 创建一个调用的方法
在外部可以调用 千万不能用
直接 打印 print( 类名 _ 类名 _ _属性 ) # 因为函数一运行识别到有私有成员时 就直接 变为 _类名_ _属性 了 ,这样别的就调用不到了
e.g
class A:
name = ' alex '
_ _age= 1000
def func( self ) :
print( self . _ _ age )
print( A. _ _age )
print( ' func... ' )
a1= A( )
print( a1.name ) ==== alex
print (A. name) ==== alex
print( a1. _ _age ) === 报错 实例化对象不能调用静态字段 在类外边
print (A. _ _age ) === 报错 类名也不能调用 在类 外边
a1. func()===== 1000 1000 func...
私有方法: 类的外部 不能访问
内部可以
派生类也不可以
e.g
class Parent:
def __func(self):
print('in Parent func')
def __init__(self):
self. __func()
class Son(Parent):
def __func(self):
print('in Son func')
son1 = Son() # ===>in Parent func 函数中有私有方法 , 方法名 自动变成了 _ Parent_ _func _Son _ _func
但是 Son()自动执行的是 _ _init_ _, 但是_ _init__所在的类是 Parent
因此 ,会执行 Parent 类中的 _ _func方法 ====> in Parent func