在方法定义中使用 class 属性作为参数?
Using class attribute in method definition as argument?
我有以下代码:
class Blah:
ABC, DEF = range(2)
def meth(self, arg=Blah.ABC):
.....
Blah.ABC 在方法内部或外部任何地方都有效,唯一不起作用的地方是在方法定义中!!!
有什么办法可以解决这个问题吗???
暂时不要使用 class 名称 Blah,因为它尚未完成构建。但是您可以直接访问 class 成员 ABC 而无需在其前面加上 class:
class Blah:
ABC, DEF = range(2)
def meth(self, arg=ABC):
print arg
Blah().meth()
# it prints '0'
它也可以使用 'new' 样式 class 定义,例如:
class Blah(object):
ABC, DEF = range(2)
当我真正进入 python 时,新的风格 classes 已经成为常态,它们更像其他 OO 语言.. 所以这就是我使用的全部。不确定坚持旧方法有什么好处(如果有的话)......但它似乎已被弃用,所以我会说除非有理由我会使用新风格。也许其他人可以对此发表评论。
我有以下代码:
class Blah:
ABC, DEF = range(2)
def meth(self, arg=Blah.ABC):
.....
Blah.ABC 在方法内部或外部任何地方都有效,唯一不起作用的地方是在方法定义中!!!
有什么办法可以解决这个问题吗???
暂时不要使用 class 名称 Blah,因为它尚未完成构建。但是您可以直接访问 class 成员 ABC 而无需在其前面加上 class:
class Blah:
ABC, DEF = range(2)
def meth(self, arg=ABC):
print arg
Blah().meth()
# it prints '0'
它也可以使用 'new' 样式 class 定义,例如:
class Blah(object):
ABC, DEF = range(2)
当我真正进入 python 时,新的风格 classes 已经成为常态,它们更像其他 OO 语言.. 所以这就是我使用的全部。不确定坚持旧方法有什么好处(如果有的话)......但它似乎已被弃用,所以我会说除非有理由我会使用新风格。也许其他人可以对此发表评论。