【问题标题】:Using class attribute in method definition as argument?在方法定义中使用类属性作为参数?
【发布时间】:2016-05-09 23:26:45
【问题描述】:

我有以下代码:

class Blah:
  ABC, DEF = range(2)

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

Blah.ABC 在方法内部或外部任何地方都起作用,唯一不起作用的地方是方法定义中!!!

有什么办法解决这个???

【问题讨论】:

    标签: python method-parameters class-attribute


    【解决方案1】:

    暂时不要使用类名 Blah,因为它还没有完成构建。但是你可以直接访问类成员 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 语言......所以我只使用这些。不知道坚持旧方式有什么好处(如果有的话)。但它似乎已被弃用,所以我会说除非有理由我会使用新风格。也许其他人可以对此发表评论。

    【讨论】:

    • class Blah: 在 Python 3 中定义了一个“only-style”类,您不再需要从 object 显式继承。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    • 2012-03-13
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多