2

私はこのようなPydanticモデルクラスを持っています

class User(BaseModel):
   username: str
   firstname: str
   lastname: str

今、ハードコーディングせずに「ユーザー名」を参照できるようにしたい(クラス名を参照できたように)

setup_index(User.__name__, "username") 

コード生成ルートを通らない方法はありますか?

4

3 に答える 3

3
  1. クライアントがメンバーの名前を知っている場合は、それgetattr(user, 'username')を使用できます (@michael-butscher が言及)。
  2. クライアントがメンバーの名前を知らない場合は、 getter 関数を 経由で作成name_getter = operator.attrgetter('username')し、クライアントに提供して として使用できますname_getter(user)Userで getter メソッドを定義し、このメソッドへの参照を提供することによって、同じ効果を得ることができます。いずれにせよ、usernameが実装の詳細である場合、このアプローチはそのような詳細をクライアントから隠すのに役立ちます。
于 2020-01-13T19:25:41.240 に答える