Python 使用方法定义中的类属性作为参数?

Python 使用方法定义中的类属性作为参数?,python,method-parameters,class-attribute,Python,Method Parameters,Class Attribute,我有以下代码: class Blah: ABC, DEF = range(2) def meth(self, arg=Blah.ABC): ..... Blah.ABC在方法内部或外部的任何地方起作用,唯一不起作用的地方是在方法定义中 有什么办法可以解决这个问题吗?不要使用类名,因为它还没有完成构造。但您可以直接访问类成员ABC,而无需将其放在类的前面: class Blah: ABC, DEF = range(2) def meth(self, arg=

我有以下代码:

class Blah:
  ABC, DEF = range(2)

  def meth(self, arg=Blah.ABC):
     .....
Blah.ABC在方法内部或外部的任何地方起作用,唯一不起作用的地方是在方法定义中


有什么办法可以解决这个问题吗?

不要使用类名,因为它还没有完成构造。但您可以直接访问类成员ABC,而无需将其放在类的前面:

class Blah:
    ABC, DEF = range(2)

    def meth(self, arg=ABC):
        print arg

Blah().meth()
# it prints '0'
它还可以使用“新”样式的类定义,例如:

class Blah(object):
    ABC, DEF = range(2)

当我真正进入python时,新样式的类已经成为常态,它们更像其他OO语言。。这就是我所用的。不确定坚持老办法有什么好处(如果有的话)。。但它似乎不受欢迎,所以我会说,除非有理由,我会使用新的风格。也许其他人可以对此发表评论。

类布拉赫:
在Python 3中定义了一个“唯一样式”类,您不再需要显式地从
对象继承。