【发布时间】:2019-09-11 07:23:06
【问题描述】:
我目前正在学习 Python 并且是新手。我遇到了 OOP 概念,但仍然对静态方法的主要目的感到困惑。我无法想象它的实用性或何时应该使用它(需要时)。有谁知道它的作用以及我应该何时使用它?
【问题讨论】:
标签: python python-3.x oop static
我目前正在学习 Python 并且是新手。我遇到了 OOP 概念,但仍然对静态方法的主要目的感到困惑。我无法想象它的实用性或何时应该使用它(需要时)。有谁知道它的作用以及我应该何时使用它?
【问题讨论】:
标签: python python-3.x oop static
静态方法的一个常见用例是创建特定对象。
例如,如果你有一个类 A,它可以从字符串数据初始化。但是字符串数据可以是xml或者json。你可以看到类似的东西:
class A:
@staticmethod
def fromXml(string):
result = A()
result.data = ...parseXML...
return result
@staticmethod
def fromJson(string):
result = A()
result.data = ...parseJson...
return result
然后像这样使用它:
object1 = A.fromXml("<xml><data>hello</data></xml>")
object2 = B.fromJson("{'data': 'hello'}")
【讨论】:
静态方法是不使用类实例(self 参数)的方法。
假设您有这样的课程:
class test:
def func1(self): print('hello ' + self.name)
@staticmethod
def func2(): print('hello')
a = test()
a.name = 'PyCoder'
然后您将调用func1 并使用test 的实例,例如:a.func1()
func2 是静态的,因此它不需要实例,您将使用类型名称调用它。
例如:test.func2()
【讨论】: