小编Raf*_*ski的帖子

Python只读属性

我不知道什么时候属性应该是私有的,如果我应该使用属性.

我最近读到,setter和getter不是pythonic,我应该使用属性装饰器.没关系.

但是,如果我有属性,那么不能从类外部设置但可以读取(只读属性).这个属性应该是私有的,私有的我是指下划线,就像那样self._x?如果是,那么如何在不使用getter的情况下阅读它?我现在唯一知道的方法是写

@property
def x(self):
    return self._x
Run Code Online (Sandbox Code Playgroud)

这样我可以读取属性obj.x但我无法设置它obj.x = 1所以它没关系.

但是我真的应该关心设置不能设置的对象吗?也许我应该离开它.但是我再也不能使用下划线,因为obj._x用户读取很奇怪,所以我应该使用obj.x然后再次用户不知道他不能设置这个属性.

你有什么看法和实践?

python properties private readonly python-2.7

74
推荐指数
4
解决办法
8万
查看次数

pyinstaller,如何在32bit Linux上制作32bit和64bit .exe?

我在ubuntu 12.04 32bit上使用pyinstaller 2.0和python2.7创建了可执行文件(所以我认为python也是32bit)。

这是控制台中的一个简单程序(无gui),它连接到TCP / IP服务器并发送帧。它可以在我的32位ubuntu下工作,但不能在32位和64位Windows 7上运行。在Win32bit上,它返回错误“设备未准备好”,而在Win64bit上,它返回错误:“应用程序的体系结构错误”。

可能是什么原因造成的?

这是整个应用程序代码的链接(很小)http://pastebin.com/qj96vpgK

exe pyinstaller 32bit-64bit windows-7 python-2.7

5
推荐指数
1
解决办法
7429
查看次数

Redis 定期在 Twisted 上断开连接和重新连接

我有与 Redis 持续连接的 Twisted 服务器。我正在使用库https://github.com/fiorix/txredisapi

问题是 Twisted 有时会失去与 Redis 的连接并在不久之后重新连接。我不知道为什么。同样的事情发生在我的本地机器和我的在线 VPS 上。

日志:

2013-04-12 11:25:34+0200 [RedisProtocol,client] <twisted.internet.tcp.Connector instance at 0xf6c45d4c> will retry in 10 seconds
2013-04-12 11:25:34+0200 [RedisProtocol,client] Stopping factory <lib.txredisapi.txredisapi.RedisFactory instance at 0xf6c45ccc>
2013-04-12 11:25:45+0200 [-] Starting factory <lib.txredisapi.txredisapi.RedisFactory instance at 0xf6c45ccc>
2013-04-12 11:30:47+0200 [RedisProtocol,client] <twisted.internet.tcp.Connector instance at 0xf6c45d4c> will retry in 10 seconds
2013-04-12 11:30:47+0200 [RedisProtocol,client] Stopping factory <lib.txredisapi.txredisapi.RedisFactory instance at 0xf6c45ccc>
2013-04-12 11:30:58+0200 [-] Starting factory <lib.txredisapi.txredisapi.RedisFactory instance at 0xf6c45ccc>
2013-04-12 11:35:59+0200 [RedisProtocol,client] <twisted.internet.tcp.Connector instance …
Run Code Online (Sandbox Code Playgroud)

python asynchronous twisted disconnect redis

5
推荐指数
1
解决办法
1635
查看次数

WebSocket协议二进制数据字节序

我正在编写基于WebSocket协议的服务器和客户端.

服务器是使用Python和Twisted制作的.

现在我可以将二进制数据从服务器发送到客户端并返回,唯一的问题是,根据一些消息来源,浏览器发送的二进制数据的字节顺序是基于机器字节顺序的.我想确定,这是真的吗?

如果这是真的,那么我应该以某种方式检查端点客户端有什么,并使用他的字节序读取/向他发送数据?检查客户端字节顺序的最佳方法是什么,只需从客户端发送即可

var view_buffer = new UInt8Array(new ArrayBuffer(1));
view_buffer[0] = 1;
Run Code Online (Sandbox Code Playgroud)

这个数据,并检查服务器是否返回1或128?

javascript python endianness websocket

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

使用 Autobahn WebSocket 进行试用单元测试

我正在尝试为使用高速公路的应用程序编写单元测试。

我想测试我的控制器,它从协议获取接收的数据,解析它并对其做出反应。

但是当我的测试达到协议应该断开连接()的程度时self.sendClose,它会引发错误

exceptions.AttributeError: 'MyProtocol' object has no attribute 'state'.
Run Code Online (Sandbox Code Playgroud)

我试图makeConnection使用proto_helpers.StringTransport,但后来我也有错误

exceptions.AttributeError: StringTransport instance has no attribute 'setTcpNoDelay'`
Run Code Online (Sandbox Code Playgroud)

我正在使用trial并且不想运行虚拟服务器/客户端仅用于测试目的,因为不建议这样做。

我应该如何编写测试,以便可以使用假连接和试用来测试发送数据、读取数据、断开连接等功能?

python twisted websocket autobahn

4
推荐指数
1
解决办法
2153
查看次数

Django ORM数据库查询是否阻止服务器,还是异步?

我只想澄清一些事情.

我相信Django服务器是异步工作的(因为如果来自客户端的每个请求都会阻塞服务器,那么它将无法工作),但我也知道Django ORM不是异步的.那么对数据库的查询会阻塞服务器吗?(我的意思是休息请求等待查询完成?)或者它可能完全不同,我误解了它.

我问这个是因为我听说大多数ORM是阻塞的,因此我不能在我的Twisted服务器中使用它们从db获取数据而不会阻塞扭曲.

database django orm asynchronous twisted

4
推荐指数
1
解决办法
3707
查看次数

Python和C的crc32相同

我需要的脚本将使用Python和C的相同输出计算crc32.

我现在正在使用zlib.crc32,但是对于C,没有这样的库,我们基于维基百科自己编写它.但它没有返回相同的值.

这是我们的C脚本代码(从维基百科复制,基于RFC):

unsigned int crc32( unsigned char *message, unsigned int n )
{
   //int i, crc;
   unsigned int crc;
   unsigned int i;
   unsigned int byte, c;
   const unsigned int g0 = 0xEDB88320,    g1 = g0>>1,
      g2 = g0>>2, g3 = g0>>3, g4 = g0>>4, g5 = g0>>5,
      g6 = (g0>>6)^g0, g7 = ((g0>>6)^g0)>>1;

   i = 0;
   crc = 0xFFFFFFFF;
   //while ((byte = message[i]) != 0)
   while( i != n)
   {
               byte = message[i];                   // Get next byte.
               // byte …
Run Code Online (Sandbox Code Playgroud)

c python crc32

2
推荐指数
1
解决办法
9043
查看次数