温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》
  • 首页 > 
  • 教程 > 
  • 开发技术 > 
  • Python中实例方法、类方法、静态方法三种方法的区别有哪些

Python中实例方法、类方法、静态方法三种方法的区别有哪些

发布时间:2020-11-04 18:01:44 来源:亿速云 阅读:139 作者:Leah 栏目:开发技术

Python中实例方法、类方法、静态方法三种方法的区别有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

1、关于参数的区别

实例方法:定义实例方法是最少有一个形参 ---> 实例对象,通常用 self

类方法:定义类方法的时候最少有一个形参 ---> 类对象,通常用 cls

静态方法:定义静态方法的时候可以不定义形参

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

实例方法:不需要添加装饰器

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

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

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") # 通过类名称调用静态方法

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI