检查对象构造函数

时间:2017-01-10 05:43:30

标签: python arrays jinja2

我正在开发一个Flask-Python应用程序,我想知道如何获得一个对象类/构造函数。

我想要这个,因为我必须合并两个不同的数组,现在我有一个结果数组,其中包含两个类的对象。

想象一下:

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

我在birthdate顺序中合并了两个数组,并且我有一个最终数组:

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

但现在我想在我的 PetPerson.html 上打印它们。如果 birthdate 的变量不同,我如何区分它们?

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

有什么想法吗?

祝你好运

2 个答案:

答案 0 :(得分:0)

你基本上想知道对象属于哪个类。

您可以使用object_name.__class__.__name__进行检查,在这种情况下,这会为您提供PersonPet。因此,您可以在if条件中将其替换为。

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

干杯

答案 1 :(得分: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 %}