[PyKDE] QTextDrag::decode

Phil Thompson phil at river-bank.demon.co.uk
Tue Apr 4 23:06:12 BST 2000


Phil Thompson wrote:
> 
> Pete Ware wrote:
> >
> > QTextDrag::decode () takes two arguments, the second is a Qstring &.
> > To get that to work with PyQt, I did:
> >
> >         x = qt.QString()
> >         qt.QTextDrag.decode (qt.QApplication.clipboard().data(), x)
> >
> > I guess what I expected was for the returned QString to be returned as
> > part of a tuple.
> >
> > Is that a reasonable expectation?  In general, how should modified
> > parameters that are pass by reference be dealt with?
> 
> A perfectly reasonable expectation.  In 99% of cases a class reference
> is passing a value to the function - you just found something that falls
> into the 1%, and I don't go through the thousands of function
> definitions with a fine toothcomb.  In short, a bug.

Thinking about this a bit more, it's less obvious what the right thing
to do is. Returning tuples has to be done when an argument is a pointer
or a reference to a simple type (int, float etc.)  With classes there is
a choice.  If you have a function that uses a class reference argument
to get and update a value, then the current way looks cleaner (and
closer to the original C++), eg...

	s = function_that_returns_a_QString()
	res = function_that_updates_a_QString(s)

...rather than...

	s = function_that_returns_a_QString()
	(res,s) = function_that_updates_a_QString(s)

...but it's inconsistent with...

	i = function_that_returns_an_int()
	(res,i) = function_that_updates_an_int(i)

Phil




More information about the PyQt mailing list