Phil Thompson 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.

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

Comments, opinions welcome.


Given this proposal might have substantial performance implications for some classes of application, and given your normal desire to mirror Qt's API in pyQt, I'd argue that QString should stay.

Also, what if 'str' was required from a method return value instead of 'unicode'? That would lead to a chain of conversions: QString -> unicode -> str.

No, the goal should be to work away at making QString interacted with str/unicode more invisibly/naturally - where possible.

A final thought: one that contradicts what I've just said, but which might contribute to the creative process: perhaps 'returned' QString objects should be wrapped in an object that simulates a str/unicode? There'd still be object creation overhead added to the return process, and delegation overhead when methods are called, but no string copy overhead. Still too much overhead? Still changing the Qt API too much?

--
Mike

_______________________________________________
PyKDE mailing list    [email protected]
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde

Reply via email to