Python的实例方法,类方法,静态方法之间的区别及调用关系

如果只看这个图,很多人可能会看的一头雾水,特别是学过完全面向对象语言的同学, Python 是双面向的,既可以面向函数编程,也可以面向对象编程,所谓面向函数就是单独一个. py 文件,里面没有类,全是一些函数,调用的时候导入模块,通过模块名.函数名()即可调用,完全不需要类,那么你可能会问,那要类还有什么毛用? 类就是用来面向对象编程啦,类可以有自己的属性,类可以创建很多实例,每个实例可以有不同的属性,这也就保存了很多私有的数据,总之都有存在的必要.

再来看上面这张图,在类里面定义的函数就是方法,类方法需要@ classmethod 修饰并且有个隐藏参数 cls,实例方法必须有个参数 self, 静态方法必须有 @staticmethod修饰,类和实例都可以访问静态方法,实例可以访问实例方法也可以访问类方法,类可以访问类方法也可以访问实例方法,访问实例方法必须要带参数 self, 可以理解为类其实也是一个实例,类访问实例方法不带参数会报错的.类本身可以访问函数,实例却不行.

时间: 2024-11-06 19:20:01

Python的实例方法,类方法,静态方法之间的区别及调用关系的相关文章

python的实例方法,类方法和静态方法区别

class foo(object):    def test(self):#这是实例方法        print('object')    @classmethod#这是类方法    def test2(clss):        print('class')    @staticmethod#这是静态方法    def test3():        print('static') #实例方法的访问方式ff=foo()ff.test()#实例方法可以通过实例化类然后实例来调用foo.test

面向对象的成员: 实例变量 类变量 实例方法 类方法 静态方法 属性 私有

成员: 在类里面能写的所有内容都是类的成员 在上?代码中__init__和method都属于类的成员方法.  ?称为实例?法.  总之这样的东西 需要?对象来访问.  ?上方的self.属性1 = 参数1 这个代码的含义是给对象设置属性信息. 含义是这个对象的xxx属性是xxxx. 这种东西?被称之为成员变量或者实例变量, 再或者被称之 为字段. 都是一个意思 变量: 1.实例变量;由对象去访问的变量(字段) 2.类变量:此时,这个变量属于类的,但是对象也可以去访问(静态变量)   先说什么是实

python中实例方法,类方法,静态方法的区别

Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调用的呢?它们又有何区别和作用呢?且看下文. 首先,这三种方法都定义在类中.下面我先简单说一下怎么定义和调用的.(PS:实例对象的权限最大.) 实例方法 定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法): 调用:只能由实例对象调用. 类方法 定义:使用装饰器@classmethod.第一个参数必须是当前类对象,该参数名一般约定为“

python中静态方法、类方法、属性方法区别

在python中,静态方法.类方法.属性方法,刚接触对于它们之间的区别确实让人疑惑. 类方法(@classmethod) 是一个函数修饰符,表是该函数是一个类方法 类方法第一个参数是cls,而实例方法第一个参数是self(表示该类的一个实例) 类中普通函数至少要一个self参数,代表类对象实例 类方法至少需要一个cls参数,通过cls可以获取到类本身的属性方法等元信息.当有个子类继承时,传入的是子类对象. 对于类方法两种调用方式,类.func(),类实例.func() 静态方法(@staticm

python中类方法、类实例方法、静态方法的使用与区别

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

面向对象编程思想 以及 封装,继承,多态 和 python中实例方法,类方法,静态方法 以及 装饰器

一.什么是面向对象编程? 目前主流的两大软件开发方式有两种,面向过程 和 面向对象. 具体什么意思,看别人写好的博客:https://baijiahao.baidu.com/s?id=1626333751993181194&wfr=spider&for=pc(如何给女朋友解释什么是面向对象编程) 二.动态编程语言中的核心 -- 封装,继承和多态 核心定义:把一组数据结构和处理他们的方法成为 对象,把具有相同行为的对象称为 类.通过 封装 隐藏内部细节,通过 继承 实现类的特化和泛化,通拓

【开发者笔记】python中的类方法(@classmethod)和静态方法(@staticmethod)

在java.c#等高级语言中我们用static来定义静态方法和静态变量,那么在python中如何定义静态方法和静态变量呢. python提供了@classmethod和@staticmethod来定义静态方法,刚接触的时候不太明白,Stack Overflow提供了一个比较方便理解的解释,Stack Overflow回答. 但是看完还是不太理解,于是自己写了个实例: class stclass(): d=1 #对象方法 def imethod(self): print(self) print("

python3类方法,实例方法和静态方法

今天简单总结下python的类方法,实例方法,静态方法. python默认都是实例方法,也就是说,只能实例对象才能调用这个方法. 那是不是说类方法也只能被类对象本身来调用呢,当然,不是.类方法既可以被类对象调用,也可以被实例对象调用.你可以这样理解,假设我现在定义的是'dog狗',它有一个类方法'啃骨头',那么对于所有的狗是不是都可以调用啃骨头这个方法,既然这样,我现在创建一个'旺财'实例,它也同样可以去啃骨头,也就是能调用这个类方法. 静态方法你可以理解为参数可以随意设置的方法,类对象和实例对

类方法、实例方法和静态方法

类方法.实例方法和静态方法,实质是内存空间不一样,三种方法的创建和调用需要注意,同样的,类属性和实例属性,类对象和实例对象都需要理解,公有属性可以设置为类属性,特有属性可以设置为实例属性,类方法.实例方法和静态方法都放在类对象中,实例对象可直接调用. 1 # coding:utf-8 2 3 class Province(object): 4 country = "中国" # 类属性 5 6 def __init__(self,name): 7 self.name = name 8 9