我写了一个自定义容器对象.
根据这个页面,我需要在我的对象上实现这个方法:
__iter__(self)
Run Code Online (Sandbox Code Playgroud)
但是,在跟踪Python参考手册中的Iterator类型链接后,没有给出如何实现自己的示例.
有人可以发布片段(或链接到资源),显示如何执行此操作?
我正在写的容器是一个映射(即通过唯一键存储值).dicts可以像这样迭代:
for k, v in mydict.items()
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我需要能够在迭代器中返回两个元素(一个元组?).目前尚不清楚如何实现这样的迭代器(尽管已经提供了几个答案).有人可以更多地了解如何为类似地图的容器对象实现迭代器吗?(即一个像dict一样的自定义类)?
我想写一个行为类似的自定义类dict- 所以,我继承自dict.
但我的问题是:我是否需要dict在我的__init__()方法中创建一个私有成员?我没有看到这一点,因为我已经有了dict行为,如果我只是继承dict.
任何人都可以指出为什么大多数继承片段看起来像下面的那样?
class CustomDictOne(dict):
def __init__(self):
self._mydict = {}
# other methods follow
Run Code Online (Sandbox Code Playgroud)
而不是更简单......
class CustomDictTwo(dict):
def __init__(self):
# initialize my other stuff here ...
# other methods follow
Run Code Online (Sandbox Code Playgroud)
实际上,我认为我怀疑这个问题的答案是用户不能直接访问你的字典(即他们必须使用你提供的访问方法).
但是,阵列访问运算符[]呢?如何实现这一点?到目前为止,我还没有看到一个显示如何覆盖[]运算符的示例.
因此,如果[]自定义类中未提供访问函数,则继承的基本方法将在不同的字典上运行?
我尝试了以下代码片段来测试我对Python继承的理解:
class myDict(dict):
def __init__(self):
self._dict = {}
def add(self, id, val):
self._dict[id] = val
md = myDict()
md.add('id', 123)
print md[id]
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
KeyError:<内置函数id>
上面的代码有什么问题?
如何更正类,myDict以便我可以编写这样的代码? …
Python新手对csv模块感到有点沮丧.按照这个速度,如果我自己编写文件解析器会更容易,但我想用Pythonic方式做事....
我写了一个小python脚本,应该将我的数据保存到CSV文件中.
这是我的代码片段:
import csv
wrtr = csv.writer(open('myfile.csv','wb'),delimiter=',', quotechar='"')
for row in rows:
wrtr.writerow([row.field1,row.field2,row.field3])
Run Code Online (Sandbox Code Playgroud)
文件myfile.csv是成功创建的,但是它是空的 - 但它有一个锁定,因为它仍然被Python进程使用.似乎数据已写入内存中的文件,但尚未刷新到磁盘.
由于Python进程持有文件锁,所以我认为我负责释放锁.这是我的问题:
我有一本字典.键是日期(日期时间).我需要对字典进行排序,以便字典中的值按日期排序 - 这样通过迭代字典,我按照所需的时间顺序(即日期/时间)顺序处理项目.
我怎么可以按日期排序这样的字典?
例:
mydict = { '2000-01-01': {fld_1: 1, fld_2: 42}, '2000-01-02': {fld_1:23, fld_2: 22.17} }
Run Code Online (Sandbox Code Playgroud)
注意:我在这里使用字符串而不是datetime,以保持示例简单
我在我的C++应用程序中嵌入了Lua.我想重定向打印语句(或者只是简单地重新定义打印函数?),这样我就可以在其他地方显示已计算的表达式.
执行此操作的最佳方法是:重定向或重新定义print()函数?
任何显示如何执行此操作的片段/指针将非常感激.
任何人都可以解释C++中使用的异常规范吗?
我搜索了cron的源代码,以修改它来修改/执行它.我找不到它(认为它将在coreutils中).
谁知道我在哪里可以获得cron的来源?
顺便说一下,我在Linux上运行(Ubuntu 10.0.4)
我正在从命令行创建一个PostgreSQL数据库(即使用psql).
我的SQL语句中有一些错误,我想找出错误发生的位置(填充屏幕缓冲区的对象太多 - 所以我需要将thios保存到文件中)
我已经尝试了几乎所有东西,从使用-o选项,-L选项和使用tee - 我仍然无法捕获在屏幕上滚动过去的信息.
我该如何记录?
这是我到目前为止所尝试的:
没有任何一个导致数据闪烁在整个屏幕上记录到文件 - 我该怎么做?
我在一个C/C++应用程序中嵌入了Lua(5.1).
我正在使用该LuaL_openlibs()函数来加载基础库.但是,此函数会加载一些我想要禁用的其他库,以便它们不能用于我的Lua脚本.
具体来说,我想禁用IO和OS模块.是否有一个函数我可以调用程序性地禁用(或卸载)这些模块,以便我可以创建一个安全的沙箱环境来运行Lua脚本?