Python OOP默认构造函数创建

时间:2018-04-21 15:19:09

标签: python oop default-constructor

我正在用Python创建一个类。我想从一开始就将变量设置为零,但我认为使用" username = none,password = none,url = none"效率低下。有没有办法让我创建一个新的def __init__(self):方法,它不会接受任何参数并将所有属性设置为无?这是它目前的样子,感谢您的帮助!:

  Class Broken():
    #pulls from function which is what
    username = none
    password = none
    url = none
    job_url = none
    headers = none
而是,我喜欢......

def __init__(self):?????

1 个答案:

答案 0 :(得分:0)

您可以使用后备__getattr__方法。如果属性名称在列表中,则返回None。在以下示例中,尝试获取a,b或c的值将返回None,除非它们已设置。

class Foo:
    def __init__(self):
        pass

    def __getattr__(self,attrname):
       if attrname in {'a','b','c'}:
           return None
       else:
           raise AttributeError(attrname)


f = Foo()
f.a = 23

print(f.a,f.b)

打印:

23 None

尝试访问另一个未设置的属性会引发AttributeError(我承认异常消息有点简洁)