我想在Python中创建一个工厂模式,其中一个类有一些配置,并且知道如何按需构建另一个类的对象(或多个类)。为了使这完整,我想防止在工厂之外创建该类。在Java中,我会将两者放在同一个包中,并将类的构造函数设置为包保护.
对于常规方法名称或变量,可以遵循Python惯例并使用单下划线或双下划线("_foo"或"__foo")。是否有一种方式可以对构造函数进行类似的操作呢?
谢谢
谢谢
你做不到。Python 的理念通常被总结为“我们都是成年人了”,也就是说,你不能阻止人们调用方法、改变属性、实例化类等操作。相反,你应该提供一种明显的方式来构造类的实例,然后假设它会被使用。
别费事了,这不是Python的方式。
更好的解决方案是简单地记录客户端应该调用哪个构造函数或工厂方法,并不要过多关注公共/私有(在Python中并没有太大意义;一切本质上都是公开的)。
__double_underscore
名称实际上是被编码的,这不会强制执行任何安全性,但会引起问题。 - Katriel