在本教程中,我们将学习类方法、静态方法和实例方法。 这些方法是 Python 中面向对象编程的核心概念。 每个 Python 爱好者都应该熟悉这些方法以及如何根据需要使用它们。 下面简单介绍一下实例、类和静态方法。

什么是实例方法?

顾名思义,实例方法绑定到类实例,并对对象(实例)变量给出的数据/值执行一组操作。 如果在方法内部使用实例变量,这些方法称为实例方法。 它可以修改对象状态。 self 关键字是与实例方法一起工作的第一个参数,self 指的是当前对象。

例子

class Employee:  
    # constructor  
    def __init__(self, name, department):  
        # Instance variable  
        self.name = name  
        self.department = department  

    # instance method to access instance variable  
    def show(self):  
        print('Name:', self.name, 'Department:', self.department)  

obj = Employee('Yiibai.com', 'IT')  
obj.show()

运行结果:

Name: Yiibai.com Department: IT

解释 - 在上面的代码中定义了使用 Python 对象创建实例变量的构造函数。 在 show() 函数中,使用 self 关键字访问这两个变量。可以使用以下代码访问和修改实例变量。

示例2

class Employee:  
    # constructor  
    def __init__(self, name, department):  
        # Instance variable  
        self.name = name  
        self.department = department  

    # instance method to access instance variable  
    def show(self):  
        print('Name:', self.name, 'Department:', self.department)  

obj = Employee('Yiibai.com', 'IT')  
obj.show()  
obj.name = 'Vsdiffer'  
obj.department = 'HR'  
obj.show()

运行结果:

Name: Yiibai.com Department: IT
Name: Vsdiffer Department: HR

解释 - 可以看到访问了实例变量并更改了它的值。 在 show() 函数中,实例方法打印更新的值。

类方法

类方法绑定到类,而不是实例。 它可以修改类状态意味着它可以全局更改类配置。 它只能访问类变量。 类方法用于创建工厂方法。 类方法的语法不同; 不接受 self 参数,而是接受 cls 作为指向类的参数。 它不能修改实例状态。 但是,类方法所做的更改反映了该类的所有实例。 @classemethod 装饰器或 classmethod() 定义类方法。

例子

class Employee:  
    # class variable   
    salary = 25000  
    def __init__(self, name, department):  
        # Instance variable  
        self.name = name  
        self.department = department  

    # instance method to access instance variable  
    def show(self):  
        print('Name:', self.name, 'Department:', self.department, 'Salary:', Employee.salary)  

    def change_salary(cls, salary):  
        cls.salary = salary  

obj = Employee('Yiibai.com', 'IT')  
obj.show()  
Employee.change_salary(35000)  
obj.show()

运行结果:

Name: Yiibai.com Department: IT Salary: 25000
Name: Yiibai.com Department: IT Salary: 35000

解释 - 在上面的代码中,定义了类变量名salary和类方法change_salary()change_salary() 函数访问类变量salary,它用于修改所有员工的薪水。在对象创建部分做了同样的事情。

静态方法

静态方法既不使用 self 也不使用 cls 参数; 通用实用程序方法单独执行任务。 Python 中的静态方法类似于 Java 和 C++ 中的静态方法,它们不能修改类或实例的行为。 @staticmethod 装饰器或 staticmethod() 方法定义了静态方法。 让我们看看下面的例子。 可以使用类名和类的实例来访问静态方法。

例子 -

class Employee:  
    @staticmethod  
    def sample_method(x):  
        print('Inside static method', x*x)  

# call static method  
Employee.sample_method(10)  

# can be called using object  
emp = Employee()  
emp.sample_method(10)

运行结果:

Inside static method 100
Inside static method 100

解释 - 在上述方法中创建了一个将 x 作为参数的静态方法。 计算与自身的乘法,并使用类名和实例访问静态方法。

让我们了解类、实例和静态方法之间的区别。

类方法与静态方法与实例方法

我们将使用一些参数来描述这些方法之间的一些本质区别。 这些差异将帮助您更好地理解 oops 概念。

方法调用

  • 可以使用类的对象/实例来访问实例方法。
  • 可以使用类名和类的对象来访问类方法和静态方法。

修改

  • 实例方法可以修改实例变量的行为。
  • 类方法可以修改类的行为,这反映到整个类,因此与类的所有实例一样。
  • 静态方法孤立地执行它们的任务。它们与类或实例方法没有任何交互。

属性访问

  • 实例方法可以访问类变量和实例变量。
  • 类方法可以访问类变量。
  • 静态方法不能访问类变量和静态变量。因此,它不能改变类或实例状态的行为。

类绑定和实例绑定

  • 实例方法与类的对象绑定,以便我们可以使用对象访问它们。
  • 使用类名访问类方法和静态方法是一种很好的做法,因为它们绑定到类。

重要提示

  • 要掌握 Python 的 oops 概念,我们需要了解类、实例和静态方法。
  • 实例方法使用 self 参数来访问类实例。
  • 类方法不需要类实例。他们使用 cls 参数而不是 self 参数。
  • 静态方法既不使用self也不使用self。它们充当常规函数,但可以通过类名访问。
  • 静态方法和类方法进行通信并(在一定程度上)强制执行开发人员关于类设计的意图。它可以有维护的好处。
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:类方法、静态方法和实例方法的区别
本文链接:https://www.vsdiffer.com/vs/class-method-vs-static-method-vs-instance-method.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。