当前位置:   article > 正文

【python高级编程教程】笔记(python教程、python进阶)第三节:(6)实例方法、静态方法(@staticmethod)、类方法(@classmethod)_python 实例方法

python 实例方法

参考文章1:【比刷剧还爽】清华大佬耗时128小时讲完的Python高级教程!全套200集!学不会退出IT界!

参考文章2:清华教授大力打造的Python高级核心技术!整整100集,强烈建议学习(Python3高级编程、异步IO并发编程)

6. 类方法、静态方法与实例方法

功能概括:实例方法用于访问或修改对象的状态,静态方法作为放置工具函数的地方,而类方法通常用于定义那些需要访问类属性或需要类级别修改的方法

解释

在Python中,类方法(Class Methods)、静态方法(Static Methods)和实例方法(Instance Methods)是根据它们如何与类和其实例交互来区分的。它们各自解决不同的问题并提供了类设计的灵活性。

实例方法

实例方法是类的默认方法类型。它们的第一个参数总是self,代表类实例本身。实例方法可以访问和修改实例状态(即实例变量)。它们主要用于执行那些需要使用到具体实例数据的操作。

定义和调用实例方法:
class MyClass:
    def __init__(self, value):
        self.instance_var = value
    
    def instance_method(self):
        return f'Instance var is: {self.instance_var}'

# 创建实例
my_instance = MyClass(10)
# 调用实例方法
print(my_instance.instance_method())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
'
运行

在这里插入图片描述

静态方法(用@staticmethod装饰器标记)

静态方法用@staticmethod装饰器标记,不接受selfcls作为首个参数。它们与类的具体实例或类本身无关。静态方法的一个典型用途是作为工具函数,用于执行与类的主要职责无关,但又逻辑上属于类的操作。

定义和调用静态方法:
class MyClass:
    @staticmethod
    def static_method():
        return 'This is a static method'

# 直接通过类调用静态方法
print(MyClass.static_method())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
'
运行

类方法(用@classmethod装饰器标记)

类方法用@classmethod装饰器标记,并接受cls作为第一个参数,它代表类本身。类方法可以访问和修改类状态(即类变量)。它们通常用于定义需要访问类属性或需要在类级别进行修改的方法。

定义和调用类方法:

class MyClass:
    class_var = 0
    
    @classmethod
    def class_method(cls):
        cls.class_var += 1
        return f'Class var is: {cls.class_var}'

# 通过类调用类方法
print(MyClass.class_method())
# 再次调用,查看类变量变化
print(MyClass.class_method())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
'
运行

在这里插入图片描述

应用场景总结

实例方法用于实现对象的行为,需要访问或修改对象的状态。
静态方法作为放置于类命名空间下的工具函数,不需要访问类或实例的任何属性。
类方法用于实现需要操作类变量的方法,适合于实现那些影响整个类而非单个实例的行为。

通过这种方式,Python提供了一种灵活的机制来设计类,允许开发者根据需求选择最合适的方法类型来实现特定的功能。

python类静态方法与C++类静态方法有什么异同?

Python和C++都支持静态方法的概念,但是在具体的语法和使用场景上存在一些差异。下面分别概述Python和C++中静态方法的异同。

相同点
1. 不需要实例化:在Python和C++中,静态方法都可以在不需要创建类的实例的情况下被调用。
2. 无法访问实例属性:静态方法既不接收类实例(self/this)作为参数,也不接收类(cls/Class)本身作为参数,因此它们无法访问类的实例属性或类属性。
  1. 用途相似:在两种语言中,静态方法通常用于实现与类的具体实例无关的功能。
不同点
1. 定义语法
  • Python中,静态方法通过@staticmethod装饰器定义。
    class MyClass:
        @staticmethod
        def my_static_method():
            return "这是一个静态方法"
    
    • 1
    • 2
    • 3
    • 4
    '
    运行
  • C++ 中,静态方法通过在类定义中使用static关键字声明。
    class MyClass {
    public:
        static void myStaticMethod() {
            std::cout << "这是一个静态方法" << std::endl;
        }
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
2. 调用方式
  • Python中,静态方法既可以通过类名直接调用,也可以通过类的实例调用。
  • 在**C++**中,虽然也可以通过实例调用静态方法,但是通常通过类名直接调用静态方法,以强调其静态性质。
3. 设计哲学
  • Python的设计更加灵活,支持多种编程范式,包括面向对象编程、函数式编程等。静态方法作为类的一部分,但不依赖于类的状态。
  • C++ 作为一种更接近底层的语言,强调性能和类型安全,其类的静态方法通常用于与类紧密相关但不依赖于类实例的操作。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/903477
推荐阅读
相关标签
  

闽ICP备14008679号