【发布时间】:2011-09-07 17:07:08
【问题描述】:
我正在尝试写类似的东西:
class MyClass(object):
@staticmethod
def test(x, y, z=None):
if not z:
z = external_function(MyClass)
是否可以在 python 中将其重写为:
class MyClass(object):
@staticmethod
def test(x, y, z=external_function(MyClass)):
pass
(第二个代码不起作用,因为它引用了此时未定义的 MyClass)
【问题讨论】:
-
类方法必须将实例变量(对象)
self作为它们的第一个变量。 99% 的情况下,您没有将类传递给外部函数,而是将实例变量(或对象)self传递给外部函数。您对整个班级所做的事情似乎不正确。你想写@classfunction吗?或者你是否试图操纵类的对象? -
其实是
@staticmethod。 -
不能解决你的问题,但你真的应该让
test成为一个class方法,它将cls作为第一个参数,然后在你的调用中使用它到external_function。
标签: python default-value