2017-01-10 3 views
0

Ich entwickle eine Flask-Python-App und ich würde gerne wissen, wie bekomme ich eine Objektklasse/Konstruktor.Überprüfen Sie einen Objektkonstruktor

Ich möchte dies, weil ich zwei verschiedene Arrays zusammenführen musste und jetzt habe ich ein Ergebnis Array mit Objekten beider Klassen.

Stellen Sie sich vor:

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

Ich fusionierte beiden Arrays in birth Ordnung und ich habe eine letzte Reihe:

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

Aber jetzt möchte ich sie auf meinem PetPerson.html drucken. Wie kann ich beide unterscheiden, wenn die Variable für birthdate anders ist?

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

Irgendwelche Idee?

Mit freundlichen Grüßen

+0

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

Antwort

0

Sie wollen im Grunde wissen, welche Klasse das Objekt gehört.

Sie können dies überprüfen, indem Sie object_name.__class__.__name__ verwenden, dann erhalten Sie entweder Person oder Pet in diesem Fall. Und daher können Sie dies in Ihrer if-Bedingung als ersetzen.

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

Prost

0

Sie erben können.

Sagen wir beide Person und Haustiere Tiere sind:

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

dann Ihre Person und Tier erben von Tieren:

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

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

Dann in Ihrer Vorlage:

{% for a in personpets %} 
{{ a.get_birthdate }} 
{% endblock %} 
Verwandte Themen