class A:
def f1():
pass
def f2(self):
pass
@classmethod
def f3(cls):
pass
@staticmethod
def f4():
pass print(type(A.f1), type(A.f2), type(A.f3), type(A.f4))
<class 'function'> <class 'function'> <class 'method'> <class 'function'>
可以看出,使用类A去调用时,f1/f2/f4是函数,f3是方法。

a = A()
print(type(a.f1), type(a.f2), type(a.f3), type(a.f4))
使用对象a去调用时,f1/f2/f3是方法,f4是函数
<class 'method'> <class 'method'> <class 'method'> <class 'function'>
 
f1:只能被类调用,不能被对象调用,因为f1没有self参数。被类调用时,就是普通的静态函数,和f4相同。
f2: 能够被类调用,也能被对象调用。但是这两者调用是有区别。当类调用时,和f1/f4相同,和普通的静态函数一样;当对象调用时,传入的第一个参数是对象,self=A。
f3: 能够被类调用,也能被对象调用。但是这两者调用有区别,被类调用时,可以访问类本身的状态。可以被对象访问,但是最好不要用这种方式,如果需要,请使用静态方法。
f4: 能够被类调用,也能够被对象调用。和普通函数一样。与f1不同的一点是,f1没有修饰,当对象调用时,默认会传入self参数,导致出错。但是对象调用f4时,和普通的静态函数完全一样。
 
 
 
 

python方法、类方法和静态方法的区别的更多相关文章

  1. Python 实例方法、类方法、静态方法的区别与作用

    Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调用的呢?它们又有何区别和作用呢?且看下文. 首先,这三种方法都定义在类中.下面我先简单说一下怎么定义 ...

  2. python中的实例方法、类方法、静态方法的区别

    Python 除了拥有实例方法外,还拥有静态方法和类方法,跟Java相比需要理解这个类方法的含义. class Foo(object): def test(self)://定义了实例方法 print( ...

  3. python 浅析类方法与静态方法

    类方法,静态方法的定义 Python 是双面向的,既可以面向函数编程,也可以面向对象编程,所谓面向函数就是单独一个. py 文件,里面没有类,全是一些函数,调用的时候导入模块,通过模块名.函数名()即 ...

  4. python 用类方法和静态方法实现是追加写文件内容,和读指定行号的内容

    用类方法和静态方法实现:一个是追加写文件一行内容,一个是读指定行号的内容   #coding=utf-8   class handle_file(object):     def __init__(s ...

  5. python--类中的对象方法、类方法、静态方法的区别

    1.对象方法:顾名思义,是对类实例化后的对象有效的,由对象调用 2.类方法:第一个参数是cls(当前类),是对当前类做的额外的处理,类方法需要用类去调用,而不是实例对象调用 3.静态方法:没有参数!没 ...

  6. python 面向对象 类方法,静态方法,property

    property 内置装饰器函数 只在面向对象使用 把方法当初属性使用(方法不加参数) 例子: class Rectangle: def __init__(self,long,wide,color): ...

  7. python类的实例方法\静态方法\类方法区别解析(附代码)

    前言 搞了好久python,一直搞得不太清楚这几种类的方法,今天花时间好好测试一下,算是弄懂点皮毛吧. 三种方法的不同 先剽窃个图看一下 可以看到,实例是三种方法都可以调用的,而类只可以调用两种.所以 ...

  8. 关于python的类方法、实例方法和静态方法区别

    python的类方法需要在方法前面加装饰器:@classmethod ,静态方法是在方法前面加装饰器:@staticmethod. 类方法.类属性是属于类自身,属于类自身的命名空间,和实例方法.实例属 ...

  9. python中,类方法和静态方法区别。

    面相对象程序设计中,类方法和静态方法是经常用到的两个术语. 逻辑上讲:类方法是只能由类名调用:静态方法可以由类名或对象名进行调用. 在C++中,静态方法与类方法逻辑上是等价的,只有一个概念,不会混淆. ...

  10. python中的类方法、静态方法、对象方法

    注:以下都是以公有为前提,私有方法只能在类内部调用,不需多讲. 1.对象方法 这种方法都有一个默认参数:self  这代表实例的这个对象 def __init__(self): print(" ...

随机推荐

  1. postgresql 数据库 INSERT 或 UPDATE 大量数据时速度慢的原因分析

    前言 最近这段时间一直使用pg 数据库插入更新大量的数据,发现pg数据库有时候插入数据非常慢,这里我对此问题作出分析,找到一部分原因,和解决办法. 一 死元祖过多 提起pg数据库,由于他的构造,就不得 ...

  2. 火山引擎 DataLeap:揭秘字节跳动数据血缘架构演进之路

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品,帮助用户快速完成数据集成.开发.运维 ...

  3. ChatGpt聊天API使用

    昨天ChatGpt发布了聊天API,新增了两个模型,目前还是测试阶段 gpt-3.5-turbo 功能强大的GPT-3.5模型,专门针对聊天做了优化 gpt-3.5-turbo-0301 此模型只支持 ...

  4. vue学习笔记:vue.js基础语法

    一.VUE 概述 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅 ...

  5. 将视图直接转换成表的SQL语句

    将视图直接转换成表的SQL语句 sqlserver: select * into tablename from viewname

  6. Java--Comparable接口实现,控制数组和列表的排序

    实现Comparable 接口,可以获得的排序方法有 列表排序 Collections.sort(); 数组排序 Arrays.sort(); sort()方法中的参数是可以获取排序索引的对象或者按照 ...

  7. ABAP 委外采购收货调用过账bapi

    相关的表: ekko:采购凭证抬头表 用于判断是否委外 ekpo:采购凭证行项目表 用于判断是否委外以及委外采购的数量 resb:获取委外采购单中bom的相应预留 mseg:获取已经委外原材料出库给供 ...

  8. dns服务之bind配置内网解析部分子域名,其它子域名转发

    bind配置内网解析部分子域名,其它子域名转发.以下以m.xxx.com和admin.xxx.com由内网dns解析,其它*.xxx.com转发给外网dns解析为例配置.文件/etc/named.co ...

  9. python threading.Thread暂停、唤醒、退出 不消耗cpu

    class MyThreadSound(threading.Thread): def __init__(self): super(MyThreadSound, self).__init__() sel ...

  10. Vue 实现点击空白处隐藏某节点

    手动监听判断 <template> <div> <span ref="projectButton"> <el-popover v-mode ...