在面向对象编程里面,方法的写法与函数的写法大致相似,两者最主要的区别在于调用的方式上
一、方法初体验:
def Function():
print(1)
print(2)
print(3)
Function() #需要调用函数的时候,编写好函数后直接输入函数就可以了
class Person:
def Function(self): #关于self是个什么后文再介绍
print(1)
print(2)
print(3)
p=Person()
p.Function() #关于方法的调用需要先存在一个对象(方法是对对象起作用的)
二、方法的分类:
对于方法的第一个所接受的数据来划分为:1.实例方法,2.类方法,3.静态方法
class Person:
def shilifangfa(self): #self是一个类实例化出来的一个实例
print("这是一个实例方法",self)
@classmethod
def leifangfa(cls): #cls是一个类
print("这是一个类方法",cls)
@staticmethod
def jintaifanffa():
print("这是一个静态方法") #静态方法不接受任何数据参数
#实例方法的调用
p=Person()
p.shilifanffa() #打印出相应地内容和p
#类方法的调用
Person.leifangfa() #打印出相应内容和class
#静态方法的调用
Person.jintaifangfa()
p.jintaifangfa() #以上两句都打印出“这是一个静态方法”
三、方法的存储
直接上代码
class Person:
def shilifangfa(self): #self是一个类实例化出来的一个实例
print("这是一个实例方法",self)
@classmethod
def leifangfa(cls): #cls是一个类
print("这是一个类方法",cls)
@staticmethod
def jintaifanffa():
print("这是一个静态方法") #静态方法不接受任何数据参数
p=Person()
print(p.__dict__) #打印出一个空字典
print(Person.__dict__) #打印出各种方法
def run():
print("run")
p.age=run #这里不运行函数
print(p.__dict__) #会显示出这个函数及其在内存中的地址