我一直在阅读__init__.py文件的功能。据说在包含模块的文件夹中需要一个空的__init__.py文件,这样才能导入这些模块。但是,我尝试将文件夹路径添加到PYTHONPATH(Windows7中的环境变量)。尽管此文件夹不包含__init__.py文件,但我仍然可以从该文件夹导入模块。您能否解释一下如何在不存在__init__.py的情况下导入这些模块?谢谢,最好的问候 最佳答案 __init__.py将文件夹变成package.这对于创建一种模块层次结构很有用,您可以在其中拥有如下导入语句:importmymodule.c
我了解__init__和__new__的工作原理。我想知道是否有任何__init__可以做到而__new__不能做到的事情?即可以使用__init__替换为以下模式:classMySubclass(object):def__new__(cls,*args,**kwargs):self=super(MySubclass,cls).__new__(cls,*args,**kwargs)//Do__init__stuffherereturnself我之所以这么问,是因为我想让PythonOO的这一方面更适合我。 最佳答案 所以,一个类的类
我已阅读文档,但有些内容我仍不确定。如果我这样做,是否会运行__init__.py中整个模块的所有初始化代码:frommymoduleimportmything或者只有当我这样做时importmymodule从__init__.py运行什么以及何时运行?我相信我也可以相当容易地测试这个,但为了后代和对其他人的帮助,我想我会在这里问。 最佳答案 __init__.py中的代码会在您从包中导入anything时运行。这包括在该包中导入其他模块。导入的样式(importpackagename或frompackagenameimportso
关于多父继承,当我调用super.__init__时,为什么没有调用parent2的__init__函数?谢谢。classparent(object):var1=1var2=2def__init__(self,x=1,y=2):self.var1=xself.var2=yclassparent2(object):var4=11var5=12def__init__(self,x=3,y=4):self.var4=xself.var5=ydefparprint(self):printself.var4printself.var5classchild(parent,parent2):var3
在Python中,__new__用于初始化不可变类型,__init__通常用于初始化可变类型。如果__init__从语言中删除,什么不能再做(容易)?例如,classA:def__init__(self,*,x,**kwargs):super().__init__(**kwargs)self.x=xclassB(A):def__init__(self,y=2,**kwargs):super().__init__(**kwargs)self.y=y可以像这样使用__new__重写:classA_N:def__new__(cls,*,x,**kwargs):obj=super().__ne
我试图了解关于Python(v2.7)导入机制的最佳实践。我有一个项目已经开始增长,可以说我的代码组织如下:foo/__init__.pyFoo.pymodule1.pymodule2.pymodule3.py包名是foo,在它下面我有模块Foo.py,它包含Foo类的代码。因此,我对包、模块和类使用相同的名称,这可能不是很聪明。__init__.py是空的,类Foo需要导入module1、module2和module3因此是我的Foo.py的一部分文件看起来像:#foo/Foo.pyimportmodule1importmodule2importmodule3classFoo(obj
为什么我下面的自定义异常类没有使用pickle模块正确序列化/反序列化?importpickleclassMyException(Exception):def__init__(self,arg1,arg2):self.arg1=arg1self.arg2=arg2super(MyException,self).__init__(arg1)e=MyException("foo","bar")str=pickle.dumps(e)obj=pickle.loads(str)此代码引发以下错误:Traceback(mostrecentcalllast):File"test.py",line13
在Python中,我想知道在创建类时是否需要包含__init__作为第一个方法,如下例所示:classExampleClass:def__init__(self,some_message):self.message=some_messageprint"NewClassinstancecreated,withmessage:"printself.message另外,为什么我们使用self来调用方法?谁能详细解释一下“self”的用法?另外,为什么我们在Python中使用pass语句? 最佳答案 不,没必要。例如。classA(obje
我喜欢Python的美丽外观/感觉,我希望这可以更简洁(可读性很棒)。在覆盖子类init时,接受可选关键字参数的简洁方法是什么,其中可选的kwarg必须在super()之后使用称呼?我有一个django表单,我想接受一个可选的用户参数,但如果我将它定义为参数之一user=None,然后通常的形式调用form({})假设位置参数是指关键字参数user.代码胜于(我的)话:def__init__(self,*args,**kwargs):user=Noneif'user'inkwargs:user=kwargs.pop('user')super(BaseCheckoutForm,self)
也许这更像是一个风格问题而不是技术问题,但我有一个包含多个成员变量的类,我想让它工作,以便在用户第一次创建类的实例时初始化一些成员变量(即在__init__函数中)并且我希望从稍后将调用的成员函数的参数定义其他成员变量。所以我的问题是我应该在__init__函数中初始化所有成员变量(并将稍后定义的变量设置为虚拟值)还是在__init__函数中初始化一些还有一些在以后的功能中。我知道这可能很难理解,所以这里有几个例子。此示例在__init__函数中将var3初始设置为0,然后在my_funct函数中设置为所需的值。classmyClass(object):def__init__(self