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)

 






posted on 2017-12-25 18:43  纵情狂飞  阅读(512)  评论(0编辑  收藏  举报