在本教程中,我们将学习类方法、静态方法和实例方法。 这些方法是 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
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。