草庐IT

range-init

全部标签

python - 当参数数量不正确时,如何让 __init__() 引发更有用的异常而不是 TypeError?

我有一个带有init的类,它接受很多参数——有些是必需的,有些不是。如果未提供所需参数之一,您可能会收到TypeError,并显示一条无用消息,例如“至少需要10个参数(给定14个)”。我想要一个自定义的TypeError子类,它实际上会通知用户缺少哪些参数。 最佳答案 如果你想使用kwargs,你可以在init中设置一个必需的参数列表,然后检查是否所有必需的kwargs都存在。查看以下示例。classSomething():def__init__(self,**kwargs):required_args=['arg_1','arg

c++ - 如何在 Boost python 中包装一个 init/cleanup 函数

我最近发现了boost-python的存在,并对它明显的简单性感到惊讶。我想试一试并开始包装现有的C++库。虽然包装基本库API调用非常简单(没什么特别的,只是常规函数调用和非常常见的参数),但我不知道如何正确包装初始化/清理函数:目前,我的C++库要求调用者在程序启动时首先调用mylib::initialize(),然后调用mylib::cleanup()在它结束之前(实际上还有一个初始化对象负责处理这个问题,但它可能无关紧要)。我应该如何使用boostpython包装它?强制Python用户调用mymodule.initialize()和mymodule.cleanup()似乎不是

python - 你如何使用 __init__.py?

我正在尝试了解__init__.py文件如何用于打包和调用来自不同目录的模块。我的目录结构是这样的:init_test\__init__.pya\aaa.pyb\bbb.py在aaa.py中有一个叫做test的函数bbb.py看起来像这样:importinit_test.a.aaaif__name__=="__main__":init_test.a.aaa.test()但这给了我ImportError:Nomodulenameda.aaa我做错了什么?我试过从包结构上方的模块而不是包内部的模块做同样的基本事情,但这也不起作用吗?我的__init__.py 最

python - __init__.py 在同一目录中找不到模块

这个问题在这里已经有了答案:ImportErroronpython3,workedfineonpython2.7(1个回答)关闭5年前。我需要有关如何在python包中组织源代码的帮助-我已经在网上学习了几个教程(尤其是thisone)关于如何这样做,但它并没有像解释的那样工作,也没有像我想象的那样工作.我想创建一个名为binaryio的python包。它应该提供两个名为BinaryReader和BinaryWriter的类,我希望用户能够使用它们导入frombinaryioimportBinaryReaderfrombinaryioimportBinaryWriter因此我创建了我的

python - Python 语言中的函数 range() 没有给出预期的结果

作为python的初学者,我试图在IDLE终端中测试函数range()。我在终端中写下了下面发布的代码,我希望看到这样的结果:range(10)==>[0,1,2,3,4,5,6,7,8,9]但不幸的是,我没有得到预期的结果我试过的Python代码:range(10)print(range(10))shell的结果:>>>print(range(10)) 最佳答案 在python3中,range()返回一个生成器,这就是它向您显示对象而不是值的原因:>>>print(range(10))range(0,10)如果您需要一个列表,则需

python - 统一码编码错误 : 'ascii' codec can't encode character u'\u2019' in position 47: ordinal not in range(128)

我正在使用Python2.7和MySQLdb1.2.3。我尝试了在stackoverflow和其他论坛上找到的所有内容来处理我的脚本抛出的编码错误。我的脚本从源MySQL数据库中的所有表中读取数据,将它们写入pythonStringIO.StringIO对象,然后将该数据从StringIO对象加载到Postgres数据库(显然是UTF-8编码格式。我通过使用psycopg2库的copy_from命令查看属性——pgadmin中数据库的定义)找到了这一点。我发现我的源MySQL数据库中有一些表采用latin1_swedish_ci编码,而另一些表采用utf_8编码格式(从informat

Python 3 在这种情况下不需要 __init__.py 吗?

假设我有:src/__init__.pya.pyb.py假设__init__.py是一个空文件,而a.py只有一行:TESTVALUE=5假设b.py是:fromsrcimportaprint(a.TESTVALUE)现在在Python2.7和Python3.x中,运行b.py会给出结果(5)。但是,如果我删除文件__init__.py,b.py在Python3.x中仍然有效,但在Python2.7中,我得到错误:Traceback(mostrecentcalllast):File"b.py",line5,infromsrcimportaImportError:Nomodulename

python - 从 __init__.py 文件相对导入抛出错误

所以我使用的是同事设置的模板,作为python的新手,我可能遗漏了一些非常明显的东西。主目录有一个init文件,它有一个我需要的模块,用于生成错误的主python文件。同事使用:from.importX其中X是模块,但是当将此(和填充的初始化文件)复制到我自己的目录时,它会生成此错误:ValueError:Attemptedrelativeimportinnon-package从谷歌和SO我收集到这非常好并且合乎逻辑,所以我想知道,作为一个新手,我错过了什么。 最佳答案 您必须了解Python如何处理模块。当您使用脚本启动解释器时,

python - 元类的 "__call__"和实例的 "__init__"的关系?

假设我有一个元类和一个使用它的类:classMeta(type):def__call__(cls,*args):print"Meta:__call__with",argsclassProductClass(object):__metaclass__=Metadef__init__(self,*args):print"ProductClass:__init__with",argsp=ProductClass(1)输出如下:Meta:__call__with(1,)问题:为什么ProductClass.__init__没有被触发...只是因为Meta.__call__?更新:现在,我为Pr

python - 从该实例的 __init__ 方法中调用实例方法是一种错误的形式吗?

我正在构建一个对象,该对象具有一个属性,该属性的值是在实例化时随机生成的。该属性会不时地被分配一个新值(也是随机的),所以我正在定义一个方法来这样做。通过从__init__中调用该方法来初始化属性是一种错误的形式吗?这很容易避免——我只需要复制少量代码——但调用该方法似乎更优雅。这是一个例子:importrandomclassRobot(object):def__init__(self):self.setDirection()defsetDirection(self):self.direction=random.random()*360 最佳答案