Как я могу условно только регистрировать что-то, если это определенный класс? - PullRequest
1 голос
/ 15 апреля 2010

Примерно так:

if self.__class__ == "User":
                logging.debug("%s non_pks were found" %  (str(len(non_pks))) )

In [2]: user = User.objects.get(pk=1)

In [3]: user.__class__
Out[3]: <class 'django.contrib.auth.models.User'>

In [4]: if user.__class__ == 'django.contrib.auth.models.User': print "yes"
   ...: 

In [5]: user.__class__ == 'django.contrib.auth.models.User'
Out[5]: False

In [6]: user.__class__ == 'User'
Out[6]: False

In [7]: user.__class__ == "<class 'django.contrib.auth.models.User'>"
Out[7]: False

Ответы [ 2 ]

3 голосов
/ 15 апреля 2010

Классы - это объекты первого класса в Python:

>>> class Foo(object):
...     pass
... 
>>> a = Foo()
>>> a.__class__ == Foo
True

Примечание: это не строки, а объекты. Не сравнивайте с "Foo", но с Foo

2 голосов
/ 15 апреля 2010

Это должно работать:

if user.__class__.__name__ == 'User':
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...