2017-01-10 4 views
0

私はFlask-Pythonアプリケーションを開発しています。オブジェクトクラス/コンストラクタを取得する方法を知りたいと思います。オブジェクトコンストラクタを確認する

私は2つの異なる配列をマージしなければならなかったので、今私は結果の両方のクラスのオブジェクトを持つ配列を持っています。

この想像:

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

を私は誕生日のために、両方の配列をマージして、私は、最終的な配列があります。

[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のいずれかが表示されます。したがって、if条件でこれを置き換えることができます。

{% 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 %} 
関連する問題