面向对象编程/静态与动态
外观
< 面向对象编程
在面向对象编程语言中,存在静态方法和动态方法以及属性。以下是主要区别。
- 无法访问自身或其他类的动态方法
- 无法访问自身或其他类的动态属性
- 由于它们是静态的,因此只实例化一次,并且不同的实例始终相同
- 可以访问自身或其他类的动态方法
- 可以访问自身或其他类的动态属性
- 可以多次实例化,每次都使用自己的唯一实例,处理可能唯一的数据
class Values():
def __init__(self, value):
self.value = value
def squared(self, value):
self.value = self.multiply_value(value, value)
@staticmethod
def multiply_value(value1, value2):
return value1 * value2
在上面的代码中,您可以看到方法squared()将self作为参数。这使它可以访问类的其他属性和方法。正如您所见,它接收一个初始传入值,对其进行一些修改,然后将类的value属性设置为计算结果。由于它可以访问其他类的方法/属性并修改类状态,因此它被认为是动态方法。
另一方面,您可以看到multiply_value()没有self作为参数。此方法所做的只是将两个传入值相乘并返回结果。它从不需要访问其类的属性或方法,它只执行计算。由于它不需要访问其类的唯一数据,因此它只加载一次,因为任何其他实例都将是相同的,并且会浪费内存,因此这是一种静态方法。