2017-01-10 2 views
0

Я разрабатываю приложение Flask-Python, и я хотел бы знать, как получить класс объекта/конструктор.Проверка конструктора объекта

Я хочу это, потому что мне пришлось объединить два разных массива, и теперь у меня есть результат массив с объектами обоих классов.

Представьте себе:

[Person, Person, Person, Person] 
[Pet, Pet, Pet, Pet, Pet] 

Я слился как массивы в порядке BirthDate и у меня есть окончательный массив:

[Person, Pet, Pet, Person, Pet, Pet, Person] 

Но теперь я хочу, чтобы напечатать их на моем PetPerson.html. Как отличить их оба, если переменная для Дата рождения отличается?

{% for a in personpets %} 
if this object is a pet: 
print a.petbirthdate 
else: 
print a.personbirthdate 
{% endblock %} 

Любая идея?

С наилучшими пожеланиями

+0

HTTPS://docs.python.org/3/library/functions.html#isinstance – wwii

ответ

0

Вы в основном хотите знать, какому классу принадлежит объект.

Вы можете проверить, что с помощью object_name.__class__.__name__ это даст вам Person или Pet в этом случае. И, следовательно, вы можете заменить это в своем случае как.

{% for a in personpets %} if object.__class__.__name__ == "Pet": print a.petbirthdate else: print a.personbirthdate {% endblock %}

Приветствия

0

Вы можете использовать наследовать.

Скажем, как человек и домашние животные:

class Animals(object): 
    get_birthdate(self):pass 

Тогда ваш человек и животное наследуемые от животных:

class Person(Animal): 
get_birthdate(self): 
    return self.personbirthdate 

class Pet(Animal): 
    get_birthdate(self): 
     return self.petbirthdate 

Затем в шаблоне:

{% for a in personpets %} 
{{ a.get_birthdate }} 
{% endblock %} 
Смежные вопросы