[PyKDE] QString in PyQt4 - Request for Comments

Gerard Vermeulen gerard.vermeulen at grenoble.cnrs.fr
Wed Oct 19 06:27:15 BST 2005


On Tue, 18 Oct 2005 18:24:08 +0100
Phil Thompson <phil at riverbankcomputing.co.uk> wrote:

> I'm wondering whether QString should be dropped in PyQt4 in order to make it 
> more Pythonic.
> 
> At the moment Python strings and unicode strings are automatically converted 
> to QStrings when passed as arguments - so there would be no change there. If 
> a QString was returned by a method or an operator then a unicode string would 
> be returned instead.
>

It sounds appealing but what does it cost in memory when a QString is shared
between many other objects?  If the conversion for all shared QStrings can be
impemented in constant memory, I have less reservations (sometimes I translate
between C++ and Python).

If not, it may be that PyQt becomes less interesting for certain applications
(for instance using qtsql, or with huge quantities of text).  Memory footprint
does matter.

>
> Obviously you would lose all of QString's methods and would have to rely on 
> what Python gives you for manipulating strings.
> 
> One of the limitations of QString has been that you couldn't do...
> 
> q = "Py" + QString("Qt")
> 
> ...but with current snapshots you can - so this is an argument for keeping 
> QString as it has become easier to use.
> 
> BTW, the following is a consequence of the additional support...
> 
> s = "Py"
> # s is of type str
> s += QString("Qt")
> # s is now of type QString
>
Is this really necessary (causes surprises when passing the result where
a Python string is expected)?
anInt += aFloat
# anInt is of type float
aFloat += anInt
# aFloat is of type float

Gerard




More information about the PyQt mailing list