Python中对象的suppress空初始化
我想在创建某个类的实例时强制使用特定数量的参数。从我读到的,即使我声明Python中对象的suppress空初始化,python,class,constructor,Python,Class,Constructor,我想在创建某个类的实例时强制使用特定数量的参数。从我读到的,即使我声明 class someClass: def __init__(self, arg1, arg2..): # whatever 仍然可以实例化这样的类: a = someClass() 我对python非常陌生,所以我唯一的想法就是重载一个空构造函数并在其中抛出一个异常。但我更喜欢在编译时强制执行它的东西。这可能吗?正如您在尝试时所看到的,如果您的\uuuu init\uuuu方法具有必需的参数,则在
class someClass:
def __init__(self, arg1, arg2..):
# whatever
仍然可以实例化这样的类:
a = someClass()
我对python非常陌生,所以我唯一的想法就是重载一个空构造函数并在其中抛出一个异常。但我更喜欢在编译时强制执行它的东西。这可能吗?正如您在尝试时所看到的,如果您的
\uuuu init\uuuu
方法具有必需的参数,则在不传递这些参数的情况下无法创建对象。但我要提醒您,“强制”调用方做一些事情可能会违反Python的规则。通常,Python的口号是“记录您的API,然后让调用者做调用者要做的事情。”它到底说了什么可以像这样初始化此类?首先尝试运行代码。(请注意,self
是Python在调用方法时添加的一个特殊位置参数。)它不会运行,您会得到一个TypeError
,而不传递所需的位置参数。只要我定义了一个_uuuu u,它就会自动强制执行我想要的?编辑:我试图运行它,但我得到了一个typeerror,因为我使用了继承,在那里有另一个错误。我现在让它工作了,它的行为和你们两个说的一样。我不好,有点过早地问。如果你把参数设置为可选的,你只能实例化而不传递任何参数<代码>定义初始化(self,arg1=None,…):。