python 2018.7.25 接口类,抽象类

python 没有接口这个概念
接口类,抽象类: 制定一个规范.
from abc import ABCMeta,abstractmethod
class Payment(metaclass=ABCMeta): # 抽象类(接口类):
@abstractmethod
def pay(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(Payment):
def __init__(self,money):
self.money = money
def pay(self):
print('使用微信支付了%s' % self.money)

def pay(obj):
obj.pay()
w1 = Wechatpay(200)
a1 = Alipay(200)
j1 = Jdpay(100)
pay(a1) # 归一化设计
pay(j1)python面向对象的三大特征之一:
多态: python处处是多态.
java :强类型语言
python:弱类型语言
python 不管什么类型,传入函数,封装到对象中都可以.

python没有多态?他有什么? 他有鸭子类型.
鸭子类型 : 看着像鸭子,他就是鸭子.

这些类 都互称为鸭子.

class Str:
def index(self):
pass

class List:
def abc(self):
pass

class Tuple:
def rrr(self):
pass
广义的封装: 实例化一个对象,给对象空间封装一些属性.
狭义的封装: 私有制.

私有成员:私有静态字段,私有方法,私有对象属性

私有静态字段
class B:
__money = 100000

class A(B):
name = 'alex'
__age = 1000

def func(self):
print(self.__age)
print(A.__age) # 对于私有静态字段,类的内部可以访问.
print('func....')
def func1(self):
print(self.__money)
print(A.__money)
a1 = A()
print(a1.name)
print(A.name)

print(a1.__age) # 实例化对象不能访问私有静态字段
print(A.__age) # 类名不能访问私有静态字段
对于私有静态字段,类的外部不能访问.

a1.func()

对于私有静态字段,类的内部可以访问.

a1.func1()

对于私有静态字段来说,只能在本类中内部访问,类的外部,派生类均不可访问.

可以访问,但是工作中千万不要用.
print(A._A__age)
print(A.__dict__)

私有方法

class B:
__money = 100000
def __f1(self):
print('B')

class A(B):
name = 'alex'

def __func(self):
print('func....')

def func1(self):
# self.__func() # 类的内部可以访问
self.__f1()
a1 = A()
a1.__func() # 类外部不能访问
a1.func1() # 类的内部可以访问
a1.func1() # 类的派生类也不能访问.
 
 







 

猜你喜欢

转载自www.cnblogs.com/xdlzs/p/9373946.html