小编sky*_*gle的帖子

如何为容器对象实现__iter __(self)(Python)

我写了一个自定义容器对象.

根据这个页面,我需要在我的对象上实现这个方法:

__iter__(self)
Run Code Online (Sandbox Code Playgroud)

但是,在跟踪Python参考手册中的Iterator类型链接后,没有给出如何实现自己的示例.

有人可以发布片段(或链接到资源),显示如何执行此操作?

我正在写的容器是一个映射(即通过唯一键存储值).dicts可以像这样迭代:

for k, v in mydict.items()
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我需要能够在迭代器中返回两个元素(一个元组?).目前尚不清楚如何实现这样的迭代器(尽管已经提供了几个答案).有人可以更多地了解如何为类似地图的容器对象实现迭代器吗?(即一个像dict一样的自定义类)?

python

101
推荐指数
7
解决办法
11万
查看次数

像dict一样运行的python类

我想写一个行为类似的自定义类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 dictionary

97
推荐指数
8
解决办法
11万
查看次数

CSVWriter在写入时不保存数据

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进程持有文件锁,所以我认为我负责释放锁.这是我的问题:

  1. 如何让python刷新到磁盘
  2. 如何关闭在csv.writer()方法中打开的文件?

python csv

34
推荐指数
2
解决办法
4万
查看次数

在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,以保持示例简单

python dictionary

16
推荐指数
3
解决办法
3万
查看次数

重定向/重新定义嵌入式Lua的print()

我在我的C++应用程序中嵌入了Lua.我想重定向打印语句(或者只是简单地重新定义打印函数?),这样我就可以在其他地方显示已计算的表达式.

执行此操作的最佳方法是:重定向或重新定义print()函数?

任何显示如何执行此操作的片段/指针将非常感激.

c c++ lua

16
推荐指数
3
解决办法
8468
查看次数

Python quantlib示例?

有谁知道Python的任何好的quantlib示例?我似乎无法找到任何地方......

python quantlib

13
推荐指数
2
解决办法
6375
查看次数

任何人都可以向我解释C++异常规范吗?

任何人都可以解释C++中使用的异常规范吗?

  • 它们何时使用(我很少看到它在代码中使用)
  • 使用异常规范有哪些优缺点(优点/缺点)?

c++

12
推荐指数
3
解决办法
4551
查看次数

我在哪里可以下载cron实用程序的源代码?

我搜索了cron的源代码,以修改它来修改/执行它.我找不到它(认为它将在coreutils中).

谁知道我在哪里可以获得cron的来源?

顺便说一下,我在Linux上运行(Ubuntu 10.0.4)

c ubuntu cron

9
推荐指数
1
解决办法
6138
查看次数

psql -o不是我的预期(如何将db响应输出到输出文件)

我正在从命令行创建一个PostgreSQL数据库(即使用psql).

我的SQL语句中有一些错误,我想找出错误发生的位置(填充屏幕缓冲区的对象太多 - 所以我需要将thios保存到文件中)

我已经尝试了几乎所有东西,从使用-o选项,-L选项和使用tee - 我仍然无法捕获在屏幕上滚动过去的信息.

我该如何记录?

这是我到目前为止所尝试的:

  • psql -U -o dbcreate.log -f file.sql
  • psql -U -L dbcreate.log -f file.sql
  • psql -U -a -f file.sql | tee dbcreate.log

没有任何一个导致数据闪烁在整个屏幕上记录到文件 - 我该怎么做?

postgresql

9
推荐指数
1
解决办法
5812
查看次数

LuaL_openlibs()和沙盒脚本

我在一个C/C++应用程序中嵌入了Lua(5.1).

我正在使用该LuaL_openlibs()函数来加载基础库.但是,此函数会加载一些我想要禁用的其他库,以便它们不能用于我的Lua脚本.

具体来说,我想禁用IO和OS模块.是否有一个函数我可以调用程序性地禁用(或卸载)这些模块,以便我可以创建一个安全的沙箱环境来运行Lua脚本?

c c++ lua

9
推荐指数
3
解决办法
8750
查看次数

标签 统计

python ×5

c ×3

c++ ×3

dictionary ×2

lua ×2

cron ×1

csv ×1

postgresql ×1

quantlib ×1

ubuntu ×1