小编u0b*_*6ae的帖子

我应该使用"from package import utils,settings"或"from.import utils,settings"

我正在开发一个Python应用程序; 它将所有代码放在一个包中,然后在这个内部运行.应用程序的Python包对解释器对用户不感兴趣,它只是一个GUI应用程序.

问题是,在应用程序包中导入模块时,首选哪种样式

from application import settings, utils
Run Code Online (Sandbox Code Playgroud)

要么

from . import settings, utils
Run Code Online (Sandbox Code Playgroud)

那就是我可以指定名称(这里是'application')或者我可以用"."来说"当前包".

这是一个免费软件包,因此有可能有人想要创建我的应用程序的分支并更改其名称.在这种情况下,替代方案1是轻微的麻烦.尽管如此,我仍然一直使用样式1(虽然早期代码在某些地方使用样式2),因为样式1看起来好多了.

我错过了我的风格(1)的争论吗?或者不使用风格2是愚蠢的吗?

python

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

如何连接到python中的GObject信号,而不保持对连接器的引用?

问题基本上是这个,在python的gobject和gtk绑定中.假设我们有一个在构造时绑定到信号的类:

class ClipboardMonitor (object):
  def __init__(self):
    clip = gtk.clipboard_get(gtk.gdk.SELECTION_CLIPBOARD)
    clip.connect("owner-change", self._clipboard_changed)
Run Code Online (Sandbox Code Playgroud)

现在的问题是,ClipboardMonitor的任何实例都不会消亡.gtk剪贴板是一个应用程序范围的对象,并且连接到它会保留对该对象的引用,因为我们使用回调self._clipboard_changed.

我正在讨论如何使用弱引用(weakref模块)来解决这个问题,但我还没有想出一个计划.任何人都知道如何将回调传递给信号注册,并使其行为类似于弱引用(如果在ClipboardMonitor实例超出范围时调用信号回调,则应该是无操作).

增加:独立于GObject或GTK +的短语:

如何使用weakref语义为不透明对象提供回调方法?如果连接对象超出范围,则应将其删除,并且回调应作为无操作; 连接器不应该持有对连接器的引用.

澄清一下:我明确地希望避免必须调用"析构函数/终结器"方法

python pygtk pygobject

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

Java相当于Python的功能 - > set(string)

我想模仿Java中的Python功能.在Python中,如果我想要一个字符串中的唯一字符,我可以做到,

text = "i am a string"
print set(text) # o/p is set(['a', ' ', 'g', 'i', 'm', 'n', 's', 'r', 't'])
Run Code Online (Sandbox Code Playgroud)

如何在Java中轻松地或直接地执行此操作?

python java set

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

Python的libxml2无法解析unicode字符串

好的,Python的libxml2绑定的文档确实如此****.我的问题:

XML文档存储在Python中的字符串变量中.该字符串是Unicode的实例,其中包含非ASCII字符.我想用libxml2解析它,看起来像这样:

# -*- coding: utf-8 -*-
import libxml2

DOC = u"""<?xml version="1.0" encoding="UTF-8"?>
<data>
  <something>Bäääh!</something>
</data>
"""

xml_doc = libxml2.parseDoc(DOC)
Run Code Online (Sandbox Code Playgroud)

结果如下:

Traceback (most recent call last):
  File "test.py", line 13, in <module>
    xml_doc = libxml2.parseDoc(DOC)
  File "c:\Python26\lib\site-packages\libxml2.py", line 1237, in parseDoc
    ret = libxml2mod.xmlParseDoc(cur)
UnicodeEncodeError: 'ascii' codec can't encode characters in position 46-48:
ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

关键是u"..."宣言.如果我用简单的替换它"..",那么一切都很好.不幸的是它在我的设置中不起作用,因为它DOC肯定是一个Unicode实例.

有谁知道如何使用libxml2来解析UTF-8编码的字符串?

python xml unicode libxml2

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

标签 统计

python ×4

java ×1

libxml2 ×1

pygobject ×1

pygtk ×1

set ×1

unicode ×1

xml ×1