小编opa*_*isy的帖子

Python中的"私有"(实现)类

我正在编写一个由两部分组成的小型Python模块:

  • 一些定义公共接口的函数,
  • 上述函数使用的实现类,但在模块外部没有意义.

起初,我决定通过使用它在函数内部定义它来"隐藏"这个实现类,但这妨碍了可读性,如果多个函数重用同一个类,则不能使用它.

那么,除了评论和文档字符串之外,是否有一种机制将类标记为"私有"或"内部"?我知道下划线机制,但据我所知它只适用于变量,函数和方法名称.

python access-modifiers

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

Python UPnP/IGD客户端实现?

我正在寻找一个Python 的UPnP客户端的开源实现,更具体地说是它的Internet网关设备(IGD)部分.

目前,我只能在PyMediaServer,PyMedS,BRisaCoherence等项目中找到UPnP媒体服务器实现.

我确信我可以使用这些代码库作为开始,但媒体服务器部分将引入不必要的复杂性.

那么你能推荐一个客户端UPnP(希望是IGD)Python库吗?另一种方法是将调用调用到诸如MiniUPnP之类的C库,但我更喜欢纯Python实现.

更新:StackOverflow上提供了一个有趣的SSDP和UPnP相关讨论.

python networking upnp nat

12
推荐指数
1
解决办法
7615
查看次数

Twisted是httplib2/socket的替代品吗?

许多python库,即使是最近编写的,也使用httplib2或套接字接口来执行网络任务.

由于它们的阻塞特性,这些显然比Twisted更容易编码,但我认为将它们与其他代码(尤其是GUI代码)集成时这是一个缺点.如果您想要可扩展性,并发性或GUI集成,同时避免多线程,那么Twisted是一个自然的选择.

所以我对这些问题的意见感兴趣:

  1. 是否应该使用Twisted写入新的网络代码(小命令行工具除外)?
  2. 你会在同一个项目中混合使用Twisted,http2lib或socket代码吗?
  3. 对于大多数库来说,它是扭曲的pythonic(它比替代品更复杂,引入了对非标准包的依赖...)?

编辑:请让我用另一种方式说出来.您是否觉得使用Twisted编写新的库代码可能会增加其采用的障碍?Twisted有明显的好处(特别是gimel所说的可移植性和可伸缩性),但是它不是一个核心python库的事实可能会被一些人认为是一个缺点.

python sockets networking twisted httplib2

6
推荐指数
2
解决办法
1934
查看次数

了解Scala - >语法

我通过artima" Scala编程 "一书来体验Scala.

在介绍Map特征时,作者会花一些时间将->语法描述为可以应用于任何类型以获取元组的方法.

事实上:

scala> (2->"two")
res1: (Int, String) = (2,two)

scala> (2,"two")
res2: (Int, String) = (2,two)

scala> (2->"two") == (2, "two")
res3: Boolean = true
Run Code Online (Sandbox Code Playgroud)

但那些不等同于:

scala> Map(1->"one") + (2->"two")
res4: scala.collection.immutable.Map[Int,String] = Map(1 -> one, 2 -> two)

scala> Map(1->"one") + (2, "two")
<console>:8: error: type mismatch; 
found   : Int(2)
required: (Int, ?)
             Map(1->"one") + (2, "two")
Run Code Online (Sandbox Code Playgroud)

为什么会如此,因为我的第一次测试似乎表明两个"对"语法都构建了一个元组?

问候.

scala scala-collections scala-2.10

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