如何测试以查看某个类是否包含特定属性?如何测试以查看某个类是否包含特定属性?
In [14]: user = User.objects.get(pk=2)
In [18]: user.__dict__
Out[18]:
{'date_joined': datetime.datetime(2010, 3, 17, 15, 20, 45),
'email': u'[email protected]',
'first_name': u'',
'id': 2L,
'is_active': 1,
'is_staff': 0,
'is_superuser': 0,
'last_login': datetime.datetime(2010, 3, 17, 16, 15, 35),
'last_name': u'',
'password': u'sha1$44a2055f5',
'username': u'DickCheney'}
In [25]: hasattr(user, 'username')
Out[25]: True
In [26]: hasattr(User, 'username')
Out[26]: False
我有一个奇怪的错误,其中更多的属性显示比我实际定义。 我想有条件地停止这一点。
例如
if not hasattr(User, 'karma'):
User.add_to_class('karma', models.PositiveIntegerField(default=1))
的Python遵循EAFP模式(更容易请求原谅比许可) - 地道的Python代码不应该检查属性的存在,它应该简单地假设它会在那里。 – 2010-04-25 15:48:27
关于EAFP的更多信息:http://docs.python.org/glossary.html#term-eafp – 2010-04-25 15:56:50