[Kimchi-devel] [PATCH] issue #330: Properly log the error message when login fails
Sheldon
shaohef at linux.vnet.ibm.com
Fri Mar 7 00:35:40 UTC 2014
On 03/06/2014 11:46 PM, Crístian Viana wrote:
> Am 06-03-2014 12:12, schrieb Sheldon:
>> AFAK, seems two types has no string representation, one is unicode
>> and another is object derived from nothing.
> The statement if not isinstance(value, unicode), which is in the
> sample code above, makes sure that we will not try to convert a
> unicode object to string (only those who have a different type).
>
> And an object derived from nothing also has a string representation.
> Take a look at this example:
>
> >>> class X():
> ... def x(self):
> ... pass
> ...
> >>> a = X()
> >>> print str(a)
> <__main__.X instance at 0x7f8fe13d4b00>
> >>> print "this is a string: %s." % a
> this is a string: <__main__.X instance at 0x7f8fe13d4b00>.
You forgot one. The a follow string format will also do string
representation.
In [2]: class a(): pass
In [9]: def toU1(value):
...: if not isinstance(value, unicode):
...: value = unicode(str(value), 'utf-8')
...: return u"fo(o( = %s" % value
...:
In [10]: def toU2(value):
....: if isinstance(value, str):
....: value = unicode(str(value), 'utf-8')
....: return u"fo(o( = %s" % value
....:
In [11]: print toU1(a)
fo(o( = __main__.a
In [12]: print toU2(a)
fo(o( = __main__.a
In [13]: print toU1("fo(o(")
fo(o( = fo(o(
In [14]: print toU2("fo(o(")
fo(o( = fo(o(
In [15]: print toU1(u"fo(o(")
fo(o( = fo(o(
In [16]: print toU2(u"fo(o(")
fo(o( = fo(o(
if one developer define a class like this, it should tell the ptyhon
this a unicode file.
In [17]: class afo(o((): pass
We have discuss this problem before, kimchi do not like this.
In this case, ptyhon take a string are unicode, it should OK.
Not try.
>
>> But I'm not worry about it.
>> IMO, no one will not pass this instance of object to KimchiException
>> as args.
> IMO, we should never trust that the users/developers will pass the
> correct parameters to our code. Eventually, someone will forget that,
> and then we will have one more bug ;)
your example make me do not need to worry about this.
>>> class X():
... def x(self):
... pass
...
>>> a = X()
>>> print str(a)
<__main__.X instance at 0x7f8fe13d4b00>
>>> print "this is a string: %s." % a
this is a string: <__main__.X instance at 0x7f8fe13d4b00>.
In [20]: print a
<__main__.X instance at 0x206c440>
In [21]: print u"%s" % a
<__main__.X instance at 0x206c440>
--
Thanks and best regards!
Sheldon Feng(???)<shaohef at linux.vnet.ibm.com>
IBM Linux Technology Center
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ovirt.org/pipermail/kimchi-devel/attachments/20140307/1044373f/attachment.html>
More information about the Kimchi-devel
mailing list