对象函数:对象函数直接在类中声明即可,不需要添加装饰器,对象函数只能由对象调用执行,也可由类调用,但是在调用时,需要将一个对象作为参数进行传递,对象函数中有一个self参数,self指调用该函数的对象,例如:对象A调用该函数,self指对象A 对象B调用该函数,self指对象B
类函数:类函数声明前。需要添加装饰器@classmethod,类函数可以由类和对象调用执行,在类函数中有一个cls参数,cls指类型,类调用cls指这个类,对象调用cls指对象类型
静态函数:静态声明前,需要添加装饰器@staticmethod,静态函数可以由类和对象调用执行,在静态函数没有隐形参数,如需要传递参数,在参数列表中声明即可
# -*- coding:utf-8 -*-
#类函数和静态函数
class People(object):
#类变量
total=0
def __init__(self,name,age):
#调用父类的初始化函数
super(People, self).__init__()
#初始化当前类对象的一些属性
self.name=name
self.age=age
#对象函数 只能由对象调用
def eat(self):
print('该吃饭了。。。')
#类函数 不用声明对象便可调用
#装饰器是以@开头,@结构的称之为语法糖,装饰器的作用主要是给一些现有的函数添加一些额外的功能
@classmethod
def work(cls,time,*args,**kwargs):
#cls class 如果是类调用该函数,cls指的是这个类
#如果是对象调用该函数,cls指得就是这个对象的类型
print(cls)
@classmethod
def sleep(cls):
print('每一个类函数前必须添加装饰器 @classmethod')
#静态函数
# @staticmethod 描述的函数称为静态函数,静态函数可以由类和对象调用,函数中没有隐形参数
@staticmethod
def run(time):
print('跑步%s分钟....'%time)
#对象函数只能由对象调用
# 类函数由类调用、也可以用对象调用
People.work(10)
p1=People('张三',22)
p1.work(10)
#调用静态函数
#类调用静态函数
People.run(100)
#对象调用静态函数
p1.run(50)