类的分类
类和对象的方法一共分为四种:
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)