zoukankan      html  css  js  c++  java
  • 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") # 通过类名称调用静态方法
    作者:多测师高级讲师_郑sir
    微信:ZhengYing8887
    出处:https://www.cnblogs.com/ZhengYing0813/
    备注:本文版权归作者所有,欢迎转载和添加作者微信探讨技术,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    mysqldump 导出数据库为DBname的表名为Tname的表结构 导出数据库的所有表的表结构
    mysqldump 备份某张表 Warning: A partial dump from a server that has GTIDs will by default include the GTIDs of all transactions,
    nfs missing codepage or helper program, or other error
    date 增加一个小时 减少一个小时
    mysqldump 备份单个数据库
    mysql删除账户
    怎么删除某个用户的所有帖子?
    mongodb删除重复数据
    ReSharper2018破解详细方法
    激活windows和office
  • 原文地址:https://www.cnblogs.com/ZhengYing0813/p/13544340.html
Copyright © 2011-2022 走看看