Python では、定義するクラスの外から任意の属性を割り当てることができます。
class Profile(models.Model):
user = models.OneToOneField(User)
name = models.CharField(max_length=140)
p = Profile()
p.age = 42
ここでの基本的なメカニズムは__dict__
、すべての属性の辞書を維持する属性です。
私たちは皆、内部の仕組みをクライアント コードに公開しないように言われましたが、新しいデータを添付することはカプセル化とはまったく関係ありませんよね? このイディオムは Python コードで一般的ですか?
つまり…</h2>
それぞれに、、、などのTweet
標準フィールドがあります。
ユーザーのつぶやきリストを返すときに、このユーザーがつぶやきを「お気に入り」に設定しているかどうかを表示します。id
text
owner
明らかに、これを取得is_favorite
するには、多対多の関係を照会する必要がありますuser
。現在のユーザーに対応するオブジェクトを事前に入力
しても問題ありませんか?Tweet
is_favorite
確かにメソッドを公開できましたが、テンプレート内から引数を使用してメソッドを呼び出すことを許可しないDjango テンプレート言語のis_favorite_for(user)
制限にぶつかっています。また、テンプレートがメソッドを呼び出すべきではないと思います。
これで問題なく動作することはわかっていますが、オープン ソース プロジェクトでそのようなことを行うと、他の開発者が私を軽蔑するようになるのではないかと考えています。
サイドノート:
私は、動的型がごく最近導入された C#/.NET のバックグラウンドから来ており、いくつかのニッチな領域 (相互運用性、IoC フレームワーク、REST クライアント フレームワークなど) を除いて広く適応されていません。