How do I return None instead of raising AttributeError?
Scott M. Ransom
ransom at cfa.harvard.edu
Sun Sep 24 01:07:57 EDT 2000
More information about the Python-list mailing list
Sun Sep 24 01:07:57 EDT 2000
- Previous message (by thread): Debian-package of Python 1.6?
- Next message (by thread): How do I return None instead of raising AttributeError?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hello, I want a simple class that returns None if I try and access any attribute that has not already been set. In other words, I want to return a None instead of raising an AttributeError. Here is try number one: >>> class test1: ... def __getattr__(self, name): ... if self.__dict__.has_key(name): ... return self.name ... else: ... return None ... >>> a = test1() >>> a.b = 1.0 >>> a.b 1.0 >>> a.c >>> a Traceback (most recent call last): File "<stdin>", line 1, in ? TypeError: call of non-function (type None) This gives me (almost) the correct functionality except that I can't use any of the default class methods! The last line passes '__repr__' as name, which isn't in __dict__ and so a None gets returned. Try again: >>> class test2: ... def __getattr__(self, name): ... try: return self.name ... except AttributeError: ... return None ... >>> a = test2() >>> a.b = 1.0 >>> a.b 1.0 >>> a.c Segmentation fault Now a SegFault! Any idea what is happening here? (I am using Python 1.6 under Linux...) Thanks for the help, Scott -- Scott M. Ransom Address: Harvard-Smithsonian CfA Phone: (617) 495-4142 60 Garden St. MS 10 email: ransom at cfa.harvard.edu Cambridge, MA 02138 GPG Fingerprint: 06A9 9553 78BE 16DB 407B FFCA 9BFA B6FF FFD3 2989
- Previous message (by thread): Debian-package of Python 1.6?
- Next message (by thread): How do I return None instead of raising AttributeError?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list