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

时间:2016-05-09 23:26:46

标签: python method-parameters class-attribute

我有以下代码:

class Blah:
  ABC, DEF = range(2)

  def meth(self, arg=Blah.ABC):
     .....

Blah.ABC在方法或外面的任何地方工作,唯一不起作用的地方是方法定义!!!

任何解决这个问题的方法???

1 个答案:

答案 0 :(得分:3)

不要使用班级名称Blah,因为它还没有完成构建。但您可以直接访问类成员ABC,而无需使用类:

class Blah:
    ABC, DEF = range(2)

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

Blah().meth()
# it prints '0'

它也可以使用' new'样式类定义,例如:

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

当我真正进入python时,新的样式类是常态,它们更像其他OO语言..所以我只使用它。不知道坚持旧方式的优点是什么(如果有的话)......但它似乎已被弃用了,所以我会说,除非有理由我会使用新风格。也许其他人可以对此发表评论。