Package pytilities :: Package types :: Module _numerictypemeta
[hide private]
[frames] | no frames]

Source Code for Module pytilities.types._numerictypemeta

 1  # Copyright (C) 2010 Tim Diels <limyreth@users.sourceforge.net> 
 2  #  
 3  # This file is part of pytilities. 
 4  #  
 5  # pytilities is free software: you can redistribute it and/or modify 
 6  # it under the terms of the GNU General Public License as published by 
 7  # the Free Software Foundation, either version 3 of the License, or 
 8  # (at your option) any later version. 
 9  #  
10  # pytilities is distributed in the hope that it will be useful, 
11  # but WITHOUT ANY WARRANTY; without even the implied warranty of 
12  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the 
13  # GNU General Public License for more details. 
14  #  
15  # You should have received a copy of the GNU General Public License 
16  # along with pytilities.  If not, see <http://www.gnu.org/licenses/>. 
17  # 
18   
19  __docformat__ = 'reStructuredText' 
20   
21 -class _NumericTypeMeta(type):
22 - def __instancecheck__(self, instance):
23 try: 24 float(instance) 25 return True 26 except (ValueError, TypeError): 27 return False
28 29 # inside meta classes, self refers to the class that has this meta as 30 # metaclass
31 - def __subclasscheck__(self, subclass):
32 """Note: returns false for a string as we can't tell whether it's 33 numeric. Try to avoid subclass checks of numbers with strings. 34 """ 35 if subclass is self: 36 return True 37 38 for type_ in (int, long, float): 39 if issubclass(type_, subclass): 40 return True 41 42 return False
43