Python 3.0 - is this true?

Robin Becker robin at reportlab.com
Mon Nov 10 11:32:47 EST 2008


Steve Holden wrote:
.........intain).
> 
> Of course, using SQL against a traditional RDBMS will not return rows
> with NULL values for salary in a query such as
> 
>   SELECT name, address WHERE salary < 10000
> 
> precisely *because* NULL (absence of value) does not compare with any
> value. So you could say that 3.0 is forcing us to acknowledge database
> reality ;-)
> 
> regards
>  Steve
on the other hand I find it odd that

cmp(None,None) fails in Python 3 when None==None returns True.

In fact it seems that because None is non-comparable I need to write at least 
three of the comparisons at least as two only leads to errors. So now even 
though I can sort my objects with None I still cannot sort [None,None]

class A:
	def __init__(self,val):
		self.val=val
	def __lt__(self,other):
		if other is None: return False
		return self.val<other.val
	def __eq__(self,other):
		if other is None:
			return False
		return self.val==other.val
	def __gt__(self,other):
		if other is None: return True
		return self.val>other.val
	def __repr__(self):
		return 'A(%s)' % self.val

a=A(1)
b=A(2)
print('cmp(a,b) --> %s'%(cmp(a,b)))
print('a<b --> %s'%(a<b))
print('a>b --> %s'%(a>b))
print('a==b --> %s'%(a==b))
print('a<None --> %s'%(a<None))
print('a>None --> %s'%(a>None))
print('a==None --> %s'%(a==None))
print('None<a --> %s'%(None<a))
print('None>a --> %s'%(None>a))
print('cmp(a,None) --> %s'%(cmp(a,None)))

L=[b,a]
L.sort()
print('L --> %s'%(L))
L=[b,a,None]
L.sort()
print('L --> %s'%(L))
-- 
Robin Becker




More information about the Python-list mailing list