GAE: Почему подклассы НЕ являются экземплярами db.Model (parent)? - PullRequest
0 голосов
/ 04 мая 2010

Дано:

class A:
 pass
class B(A):
 pass

isinstance(B(), A) вернет True.

НО

class MyModel(db.Model):
    pass

isinstance(MyModel(), db.Model) возвращает False (обязательно True?).

Что мне не хватает?

Edit: Хорошо, самый простой тест, который не прошел - создал пустой проект GAE. Внутри main.py я определил:

from google.appengine.ext import db  

class MyModel(db.Model):  
    detail = db.StringProperty()  

Затем я создал тестовый файл (test_ami.py), который содержит следующее:

import unittest  
from main import MyModel  
from google.appengine.ext import db  

class TestAmI(unittest.TestCase):  
    def test_whatami(self):  
        m = MyModel()  
        self.assertEquals(True, isinstance(m, db.Model));  
        self.assertEquals(True, isinstance(MyModel(), db.Model));  

В командной строке: тесты на нос --with-gae приводит к:
Файл "test_ami.py", строка 8, в test_whatami self.assertEquals (True, isinstance (m, db.Model)) AssertionError: True! = False

Строка 8: self.assertEquals (True, isinstance (m, db.Model));

1 Ответ

3 голосов
/ 04 мая 2010

isinstance (B (), A) вернет True.

Это кажется маловероятным, поскольку в вашем определении класса B не расширяет A.

isinstance (MyModel (), db.Model) возвращает False (конечно, True?).

Тестируя это на shell.appspot.com, он возвращает True, как и ожидалось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...