__slots__Python中的目的是什么- 特别是关于我何时想要使用它,何时不想使用它?
我发现访问dict密钥更加方便,obj.foo而不是obj['foo'],所以我写了这个代码片段:
class AttributeDict(dict):
def __getattr__(self, attr):
return self[attr]
def __setattr__(self, attr, value):
self[attr] = value
Run Code Online (Sandbox Code Playgroud)
但是,我认为必须有一些原因,Python不提供开箱即用的功能.以这种方式访问dict密钥有什么警告和陷阱?
我将定义一个结构并将其传递给一个函数:
在C:
struct stru {
int a;
int b;
};
s = new stru()
s->a = 10;
func_a(s);
Run Code Online (Sandbox Code Playgroud)
如何在Python中完成此操作?
我想创建一个一次性"struct"对象来保存各种状态标志.我的第一个方法就是这个(javascript风格)
>>> status = object()
>>> status.foo = 3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'object' object has no attribute 'foo'
Run Code Online (Sandbox Code Playgroud)
绝对不是我的预期,因为这有效:
>>> class Anon: pass
...
>>> b=Anon()
>>> b.foo = 4
Run Code Online (Sandbox Code Playgroud)
我想这是因为object()没有__dict__.我不想使用字典,假设我不想创建Anon对象,还有其他解决方案吗?
我一直在尝试将这段代码移植到python中,但是我在C++中有一些我不太了解的东西(我确实知道一些C++,但这超出了我的范围):
typedef struct huffnode_s
{
struct huffnode_s *zero;
struct huffnode_s *one;
unsigned char val;
float freq;
} huffnode_t;
Run Code Online (Sandbox Code Playgroud)
我没有得到的是huffnode_s本身是如何形成的,我以前从未见过它并且不太了解它.这是什么意思,如果有人可以,那python等同于什么?
我有这个C代码:
typedef struct test * Test;
struct test {
void *a;
Test next;
};
Run Code Online (Sandbox Code Playgroud)
你将如何在Python中实现与此相当的东西(如果可能的话)?
我正在使用 Python 精彩的 Cmd 库制作一个终端游戏。但我很好奇是否可以以某种方式将 argparse 代码放入其中。就像使用 argparse 处理我的 cmd.Cmd() 类中的“args”一样。为此,我真的希望 argparse 有一种方法可以手动将 args 传递给它。我浏览了文档,但没有注意到类似的内容。
我正在创建一个d包含一百万个元组项目的字典,理想情况下我想通过以下方式访问它们:
d[1634].id # or d[1634]['id']
d[1634].name # or d[1634]['name']
d[1634].isvalid # or d[1634]['isvalid']
Run Code Online (Sandbox Code Playgroud)
而不是d[1634][0], d[1634][1],d[1634][2]后者不太明确。
根据我的测试:
import os, psutil, time, collections, typing
Tri = collections.namedtuple('Tri', 'id,name,isvalid')
Tri2 = typing.NamedTuple("Tri2", [('id', int), ('name', str), ('isvalid', bool)])
t0 = time.time()
# uncomment only one of these 4 next lines:
d = {i: (i+1, 'hello', True) for i in range(1000000)} # tuple
# d = {i: {'id': i+1, 'name': 'hello', 'isvalid': True} for i in range(1000000)} …Run Code Online (Sandbox Code Playgroud) 我正在寻找固定键,例如 a namedtuple,但可变值,例如 a dict。我可能会struct在C中使用a。Python中有这样的数据结构吗?
python ×8
c ×2
dictionary ×2
argparse ×1
c++ ×1
cmd ×1
huffman-code ×1
namedtuple ×1
oop ×1
python-2.7 ×1
slots ×1
syntax ×1
tuples ×1