python语言基础-2 面向对象-2.6 接口类

声明:本内容非盈利性质,也不支持任何组织或个人将其用作盈利用途。本内容来源于参考书或网站,会尽量附上原文链接,并鼓励大家看原文。侵删。

2.6 接口类

2.6.1 python中的接口类

python中的接口类同样要依靠abc模块实现。python中的接口类要满足以下特点:

  • 抽象类不能被实例化,只能被继承;(其非抽象的子类可以实例化)
  • 只包含接口(抽象方法),不包含其他方法及属性;
  • 实现接口类的非抽象子类必须实现其所有的接口。

不同于java中是以语法区分接口类和抽象类的。python中接口类与抽象类的形式都是一样的,python中依靠约定区分接口类与抽象类,没有语法上的强制要求。

2.6.2 创建接口类及实现接口

接口类及实现接口在形式上与抽象类有其子类的方法重写一样。如下:

from abc import abstractmethod, ABCMeta


class Walk_animal(metaclass=ABCMeta):
    @abstractmethod
    def walk(self):  # 这个抽象方法有方法体和返回值,但并不报错,说明python中是靠约定约束的,而不是靠语法约束的
        print("")
        return 5


class Swim_animal(metaclass=ABCMeta):
    @abstractmethod
    def swim(self): pass


class Fly_animal(metaclass=ABCMeta):
    @abstractmethod
    def fly(self): pass


class Tiger(Walk_animal, Swim_animal):
    def walk(self):
        print("四只脚跑")
        
    def swim(self):
        print("四只脚游")


class Swan(Walk_animal, Swim_animal, Fly_animal):
    def walk(self):
        print("两只脚跑")

    def swim(self):
        print("两只脚游")
        
    def fly(self):
        print("两只翅膀飞")
        
        
t = Tiger()
s = Swan()
t.walk()
s.fly()

2.6.3 python中的常量

Python语言因为变量无类型,所以也就不存在常量修饰符,其本身并未提供任何机制来进行常量的定义。

python程序一般通过约定俗成的变量名全大写的形式表示这是一个常量,然而这种方式并没有真正实现常量,其对应的值仍然可以被改变。后来python提供了新的方法实现常量:即通过自定义类实现常量。这要求符合“命名全部为大写”和“值一旦被绑定便不可再修改”这两个条件。因此我们只能通过自己定义类的方法来定义一个符合常量规则的类,使得该类定义的成员属性满足常量的属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值