51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 810|回复: 9
打印 上一主题 下一主题

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

[复制链接]
  • TA的每日心情
    无聊
    3 天前
  • 签到天数: 530 天

    连续签到: 2 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2023-8-3 09:21:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1测试积点
    回复可见
    游客,如果您要查看本帖隐藏内容请回复

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2019-12-31 08:59
  • 签到天数: 975 天

    连续签到: 1 天

    [LV.10]测试总司令

    2#
    发表于 2023-8-3 09:50:03 | 只看该作者
    看看
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2024-2-26 15:23
  • 签到天数: 54 天

    连续签到: 1 天

    [LV.5]测试团长

    3#
    发表于 2023-8-3 14:29:52 | 只看该作者
    学习
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 08:45
  • 签到天数: 1806 天

    连续签到: 5 天

    [LV.Master]测试大本营

    4#
    发表于 2023-8-4 09:07:20 | 只看该作者
    实例方法:实例方法的第一个参数总是实例对象self,它是类实例的一个引用。

    类方法:类方法的第一个参数总是类对象cls,它表示该方法属于类而非实例。

    静态方法:静态方法没有特定的第一个参数,即它既不需要类对象也不需要实例对象。
    回复

    使用道具 举报

  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 653 天

    连续签到: 21 天

    [LV.9]测试副司令

    5#
    发表于 2023-8-4 09:46:36 | 只看该作者
    静态不可改
    回复

    使用道具 举报

  • TA的每日心情
    开心
    1 小时前
  • 签到天数: 460 天

    连续签到: 7 天

    [LV.9]测试副司令

    6#
    发表于 2023-8-4 09:58:04 | 只看该作者
    学习
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    前天 10:15
  • 签到天数: 1521 天

    连续签到: 5 天

    [LV.Master]测试大本营

    7#
    发表于 2023-8-4 10:13:43 | 只看该作者
    实例方法:实例方法的第一个参数总是实例对象self,它是类实例的一个引用。

    类方法:类方法的第一个参数总是类对象cls,它表示该方法属于类而非实例。

    静态方法:静态方法没有特定的第一个参数,即它既不需要类对象也不需要实例对象
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 08:51
  • 签到天数: 668 天

    连续签到: 6 天

    [LV.9]测试副司令

    8#
    发表于 2023-8-4 10:21:04 | 只看该作者
    学习学习
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 07:50
  • 签到天数: 2818 天

    连续签到: 6 天

    [LV.Master]测试大本营

    9#
    发表于 2023-8-4 10:50:00 | 只看该作者
    实例方法:实例方法的第一个参数总是实例对象self,它是类实例的一个引用。

    类方法:类方法的第一个参数总是类对象cls,它表示该方法属于类而非实例。

    静态方法:静态方法没有特定的第一个参数,即它既不需要类对象也不需要实例对象。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-9-9 10:50
  • 签到天数: 188 天

    连续签到: 1 天

    [LV.7]测试师长

    10#
    发表于 2023-8-4 10:52:42 | 只看该作者
    在Python中,类方法(Class Method)、类实例方法(Instance Method)和静态方法(Static Method)是三种不同类型的方法,它们有以下区别:

    1. **类方法(Class Method):**
       - 使用`@classmethod`装饰器来定义,第一个参数通常为`cls`,表示类本身。
       - 类方法可以访问类级别的属性和方法,但不能访问实例级别的属性和方法。
       - 类方法可以通过类名调用,也可以通过类的实例调用。
       - 类方法通常用于操作类级别的数据和逻辑,例如工厂方法或类的构造函数。

       示例:
       ```python
       class MyClass:
           class_var = 0

           @classmethod
           def class_method(cls):
               return cls.class_var

       print(MyClass.class_method())  # 通过类名调用
       obj = MyClass()
       print(obj.class_method())  # 通过实例调用
       ```

    2. **类实例方法(Instance Method):**
       - 使用普通的方法定义,第一个参数通常为`self`,表示类的实例。
       - 类实例方法可以访问实例级别的属性和方法,也可以访问类级别的属性和方法。
       - 类实例方法只能通过类的实例调用,不能通过类名调用。

       示例:
       ```python
       class MyClass:
           def __init__(self):
               self.instance_var = 0

           def instance_method(self):
               return self.instance_var

       obj = MyClass()
       print(obj.instance_method())  # 通过实例调用
       ```

    3. **静态方法(Static Method):**
       - 使用`@staticmethod`装饰器来定义,没有特殊的第一个参数,既不是类本身(`cls`),也不是实例(`self`)。
       - 静态方法不能访问类级别或实例级别的属性和方法。
       - 静态方法可以通过类名调用,也可以通过类的实例调用,但不会自动传递类或实例作为参数。

       示例:
       ```python
       class MyClass:
           @staticmethod
           def static_method():
               return "This is a static method."

       print(MyClass.static_method())  # 通过类名调用
       obj = MyClass()
       print(obj.static_method())  # 通过实例调用
       ```

    总结:
    - 类方法用于操作类级别的数据和逻辑,可以通过类名或实例调用。
    - 类实例方法用于操作实例级别的数据和逻辑,只能通过实例调用。
    - 静态方法用于定义与类相关的功能,但不依赖于类或实例的状态,可以通过类名或实例调用。

    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 15:48 , Processed in 0.071298 second(s), 21 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表