跳到内容

面向对象编程/静态与动态

来自维基教科书,自由的教科书

静态与动态

[编辑 | 编辑源代码]

在面向对象编程语言中,存在静态方法和动态方法以及属性。以下是主要区别。

  • 无法访问自身或其他类的动态方法
  • 无法访问自身或其他类的动态属性
  • 由于它们是静态的,因此只实例化一次,并且不同的实例始终相同
  • 可以访问自身或其他类的动态方法
  • 可以访问自身或其他类的动态属性
  • 可以多次实例化,每次都使用自己的唯一实例,处理可能唯一的数据
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作为参数。此方法所做的只是将两个传入值相乘并返回结果。它从不需要访问其类的属性或方法,它只执行计算。由于它不需要访问其类的唯一数据,因此它只加载一次,因为任何其他实例都将是相同的,并且会浪费内存,因此这是一种静态方法。

华夏公益教科书