首页 >> 方法大全

Python实例方法、类方法、静态方法区别详解

2022-05-14 方法大全 183 作者:考证青年

实例方法、类方法、静态方法的区别详解

更新时间:2020-09-05 12:14:59 作者:multi-郑先生

本文主要介绍实例方法、类方法和静态方法的区别。文章中对示例代码进行了非常详细的介绍。对大家的学习或工作有一定的参考和学习价值。有需要的朋友可以参考以下

p>

1、关于参数的区别

实例方法:定义一个至少有一个形参的实例方法--->实例对象,通常带有self

类方法:定义类方法时至少有一个形参--->类对象,一般是cls

静态方法:可以不定义参数定义静态方法

2、关于定义方法时添加装饰器的区别

实例方法:无需添加装饰器

类方法:需要添加装饰器---->@

静态方法:需要添加装饰器--->@

3、呼叫:

1.可以通过对象直接调用实例方法

2.但是用类名调用时,需要创建一个对象,并在传参时将对象传入

方法

3.类方法可以直接通过类名调用,也可以通过对象调用

4.静态方法可以直接通过类名调用方法,也可以通过对象调用

4、附加

1.静态方法不能被继承

2.类方法不能访问实例变量,只能访问类变量

class Dog():
  age = 3   # 类变量
  def __init__(self):
    self.name = "XiaoBai"  # 实例变量
  def run(self):   # 实例方法
    print("{} years old's {} is running!".format(self.age,self.name))
  @classmethod
  def eat(cls):
    # print(cls.name)    # 类方法,不能访问实例变量(属性)
    print("XiaoHei is {} years old".format(cls.age))  # 类方法只能访问类变量
  @staticmethod
  def sleep(name):
    # 静态方法与类无关,只能类中的一个功能而已
    # 静态方法不能访问类变量和实例变量
    print("{} is sleeping".format(name))
d = Dog()
d.run()   # 通过实例化对象调用实例方法
Dog.run(d) # 通过类名称调用实例方法,需要在方法中传入实例对象
d.eat()   # 通过实例化对象调用类方法
Dog.eat()  # 通过类名称调用类方法
d.sleep("XiaoLan")  # 通过实例化对象调用静态方法
Dog.sleep("XiaoLan") # 通过类名称调用静态方法

以上就是本文的全部内容。希望对大家的学习有所帮助方法,也希望大家多多支持 Home。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了