• Python (7)——方法的分类及抽象类


    类的分类


    类和对象的方法一共分为四种:

    1.实例方法/对象方法

    只有实例化对象之后才可以使用的方法,该方法的第一个形参接收的一定是对象本身!
    

    2.绑定类的方法

    3.静态方法

    无需实例化,可以通过类直接调用的方法,方法中的参数既不接收对象名也不接受类。 一般方法可以独立调用,跟类中其他成员关联不大
    

    4.类方法

    无需实例化,可以通过类直接调用的方法
    但是方法的第一个参数接收的一定是类本身,这种方法一般情况下需要借助类中其他成员操作
    #方法的分类
    #包含各种方法的类
    class Human:
        #属性
        sex = 'man'
        age = 18
    
        #方法
        #绑定类的方法
        def say():
            print('听说一个遥远的传说')
        #非绑定类的方法(对象方法)
        def drink(self):
            print('喝农夫山泉有点甜')
    
        #类方法
        @classmethod
        def eat(cls):
            print(cls)
            print('吃个大西瓜')
    
        #静态方法
        @staticmethod
        def play():
            print('玩耍真快乐')
    
    #类的调用
    #绑定类的方法
    Human.say()
    
    #非绑定类的方法
    Human.drink(1)
    hb = Human()
    hb.drink()
    
    #类方法
    Human.eat()
    
    #静态方法
    Human.play()
    hb.play()

    抽象类


    抽象类:具有抽象方法的类就是抽象类。

    抽象方法:就是没有完成的方法。只有方法名称和参数,没有方法内容的方法。

    作用:适合于领导指定开发规范及多人协作完成类。

    abc abstract class 抽象类的缩写

        

    抽象类的特征


    1.抽象类中可以包含具体的方法也可以包含抽象方法
    2.抽象类中可以包含成员属性,而且属性没有抽象不抽象之分
    3.抽象类无法实例化使用.
    4.抽象类只能被其他类继承使用,(唯一的用法)
    5.只有子类实现了抽象类的所有抽象方法之后,该子类才可以正常实例化使用。有一个抽象方法没有实现都不可以实例化
    6.抽象类的作用是指定程序开发的标准(方法名,参数等)


    抽象类的语法


    #使用抽象类必须使用abc模块
    import abc
    
    #书写抽象类必须指定抽象类的元类  固定格式
    class Human(metaclass = abc.ABCMeta):
    
        #定义一个抽象的实例方法/非绑定类的方法
        @abc.abstractmethod
        def smoking(self):
            pass
    
        #定义一个抽象的类方法
        @abc.abstractclassmethod
        def say(cls):
            pass
    
        #定义一个抽象的静态方法/绑定类的方法
        @abc.abstractstaticmethod    
        def cry():
            pass
    
    
    #使用抽象类必须使用abc模块
    import abc
    #书写抽象类必须指定抽象类的元类  固定格式
    class User(metaclass = abc.ABCMeta):#设置抽象类的元素
        #属性
        userid = 250
    
        def wind(self):
            print('东风吹,战鼓擂')
    
        #添加用户(非绑定类/对象方法)
        @abc.abstractmethod
        def adduser(self):
            pass
    
        #删除用户(类方法)
        @abc.abstractclassmethod
        def deluser(cls):
            pass
    
        #修改用户(静态方法)
        @abc.abstractstaticmethod
        def moduser():
            pass
    
        #查询用户(绑定类)
        @abc.abstractmethod
        def finduser():
            pass
    
    #继承抽象类,完成自己的工作内容
    class Chuser(User):
        # 添加用户(非绑定类/对象方法)
        def adduser(self):
            print('添加用户的操作')
    
    #继承Chuser类
    class Hhuser(Chuser):
        # 删除用户(类方法)
        @classmethod
        def deluser(cls):
            print('删除用户的操作')
    
    #继承Hhuser类
    class Lcuser(HHuser):
        # 修改用户(静态方法)
        @staticmethod
        def moduser():
            print('修改用户的方法')
    
    #继承Lcuser类
    class Ymuser(Lcuser):
        # 查询用户(绑定类)
        def finduser():
            print('查询用户的操作')
    
    #实例化对象
    e = Ymuser()
    e.adduser()
    Ymuser.moduser()
    Ymuser.deluser()
    Ymuser.finduser()
    e.wind()
    print(e.userid)
    
    
    





  • 相关阅读:
    【数据库】事务,ACID,CAP和一致性
    线程,进程。多进程,多线程。并发,并行的区别
    mysql 集群 数据同步
    如何读取一个表的表类型,以及读取一个表中字段的类型.
    网络攻击技术开篇——SQL Injection
    MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?
    程序员找工作那些事(一)幸存者偏差
    程序员
    preg_replace的一些细节
    HDU 1258 Sum It Up(dfs 巧妙去重)
  • 原文地址:https://www.cnblogs.com/w-yumiao/p/8110713.html
Copyright © 2020-2023  润新知