前言
Python中的函数、类方法、静态方法、实例方法,如何区分呢?是不是一头雾水?
不使用类
如果你在模块中,不使用类,那么你只能创建函数,函数是通过def创建的,匿名函数我这里不写,以后你可再去看匿名函数,def就是创建函数的关键字
def my_world():
print("hello")
创建了一个函数,名字为my_world,没有参数,只是利用内置函数print向标准输出打印了一段话。
函数不止在模块中创建,你再任何位置都能创建函数,只要使用def关键字即可
使用类
在类中最常创建的是类方法、静态方法、实例方法(其实也能创建函数,这里暂时不说)
class Demo(object):
@classmethod
def second_func(cls):
print("一个类方法")
@staticmethod
def third_func():
print("一个静态方法")
def fouth_func(self):
print("一个实例方法")
1、类方法的创建方式
使用装饰器@classmethod修饰,第一个传入的隐式参数,是类对象本身
2、静态方法的创建方式
使用装饰器@staticmethod修饰,它相当于在类中的函数,没有隐式参数
3、实例方法的创建方式
第一个传入的隐式参数,表示当前实例对象
在任何地方都能创建函数
1、函数中创建一个函数
def print_hello():
def what():
print("Hi")
print("hello")
2、函数也可以定义在类方法中
3、函数可以定义在静态方法中
4、函数也可以定义在实例方法中
因为Python中的函数也是一个对象,它是function类的一个实例对象,def表示关键字表示创建,所以在哪里都可以创建
再聊聊方法
类方法、实例方法其实都是method的对象,而函数和静态方法则都是funcation的对象,你肯定不信,看看下面的例子
class Son(object):
def __init__(self):
super().__init__()
def wocao():
print("wocao")
@classmethod
def nihao():
print("nihao")
@staticmethod
def bao():
print("bao")
son = Son()
print(type(son.wocao))
print(type(son.nihao))
print(type(son.bao))
输出:
<class 'method'>
<class 'method'>
<class 'function'>
简单总结
人生最美好的时光,是你为目标而拼搏