Python中如何实现抽象类和接口类?

2026-05-21 18:415阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计573个文字,预计阅读时间需要3分钟。

Python中如何实现抽象类和接口类?

Python中没有接口这个概念,接口类,抽象类:定义一个规范。第一版 class Alipay: def __init__(self, money): self.money=money def pay(self): print('使用支付宝支付了%s' % self.money) class Jdpay: def __init__(self, m

python 没有接口这个概念

Python中如何实现抽象类和接口类?

接口类,抽象类: 制定一个规范.

第一版

class Alipay:
def __init__(self, money):
self.money = money

def pay(self):
print('使用支付宝支付了%s' % self.money)


class Jdpay:
def __init__(self, money):
self.money = money

def pay(self):
print('使用京东支付了%s' % self.money)


a1 = Alipay(200)
a1.pay()
j1 = Jdpay(100)
j1.pay()

结果:

使用支付宝支付了200
使用京东支付了100

第二版 改进,让你支付的方式一样

class Alipay:
def __init__(self, money):
self.money = money

def pay(self):
print('使用支付宝支付了%s' % self.money)


class Jdpay:
def __init__(self, money):
self.money = money

def pay(self):
print('使用京东支付了%s' % self.money)


def pay(obj):
obj.pay()


a1 = Alipay(200)
j1 = Jdpay(100)
pay(a1) # 归一化设计,通过调用pay函数,执行对应类下的方法,类名.方法

结果:

使用支付宝支付了200
使用京东支付了100

第三版,制定规则,抽象类,接口类

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) # 归一化设计

结果:

使用支付宝支付了200
使用京东支付了100

下面的类都继承了Payment类,Payment下面有个pay方法,使用了装饰器,如果继承了Payment类的类下面没有pay方法,实例化子类的时候会报错



本文共计573个文字,预计阅读时间需要3分钟。

Python中如何实现抽象类和接口类?

Python中没有接口这个概念,接口类,抽象类:定义一个规范。第一版 class Alipay: def __init__(self, money): self.money=money def pay(self): print('使用支付宝支付了%s' % self.money) class Jdpay: def __init__(self, m

python 没有接口这个概念

Python中如何实现抽象类和接口类?

接口类,抽象类: 制定一个规范.

第一版

class Alipay:
def __init__(self, money):
self.money = money

def pay(self):
print('使用支付宝支付了%s' % self.money)


class Jdpay:
def __init__(self, money):
self.money = money

def pay(self):
print('使用京东支付了%s' % self.money)


a1 = Alipay(200)
a1.pay()
j1 = Jdpay(100)
j1.pay()

结果:

使用支付宝支付了200
使用京东支付了100

第二版 改进,让你支付的方式一样

class Alipay:
def __init__(self, money):
self.money = money

def pay(self):
print('使用支付宝支付了%s' % self.money)


class Jdpay:
def __init__(self, money):
self.money = money

def pay(self):
print('使用京东支付了%s' % self.money)


def pay(obj):
obj.pay()


a1 = Alipay(200)
j1 = Jdpay(100)
pay(a1) # 归一化设计,通过调用pay函数,执行对应类下的方法,类名.方法

结果:

使用支付宝支付了200
使用京东支付了100

第三版,制定规则,抽象类,接口类

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) # 归一化设计

结果:

使用支付宝支付了200
使用京东支付了100

下面的类都继承了Payment类,Payment下面有个pay方法,使用了装饰器,如果继承了Payment类的类下面没有pay方法,实例化子类的时候会报错