generic functionは、すべての引数の型に基づいて送出されます。プログラマは関数のいくつかの実装を定義します。正しい引数は、引数の型に基づいて呼び出し時に選択されます。これは他のものの中でオブジェクトの適応に役立ちます。 Pythonには、len()
などのいくつかの汎用関数があります。Python用に最もよく管理されている汎用関数の実装は何ですか?
これらのパッケージは、このようなコードを許可する傾向がある:
@when(int)
def dumbexample(a):
return a * 2
@when(list)
def dumbexample(a):
return [("%s" % i) for i in a]
dumbexample(1) # calls first implementation
dumbexample([1,2,3]) # calls second implementation
私は、ユーザーが必要とするWebコンポーネントになり、最近について考えてきた小さいダム例。
class WebComponentUserAdapter(object):
def __init__(self, guest):
self.guest = guest
def canDoSomething(self):
return guest.member_of("something_group")
@when(my.webframework.User)
componentNeedsAUser(user):
return WebComponentUserAdapter(user)
Pythonはいくつかの一般的な機能の実装があります。代わりに、特定のWebフレームワークを必要とする、積分器はただのようなものを書く必要があるでしょう。なぜ私は他の人よりも1つを選ぶだろうか?その実装はどのようにアプリケーションで使用されていますか?
私はZopeのzope.component.queryAdapter(object, ISomething)
に精通しています。プログラマは、引数として特定のクラスのオブジェクトをとり、インタフェースと互換性のあるものを返す呼び出し可能なアダプタを登録します。これはプラグインを許可する便利な方法です。サルパッチとは異なり、オブジェクトが同じメソッド名を持つ複数のインタフェースに適応する必要がある場合でも機能します。
'len'関数は単にオブジェクトの' __len__'メソッドを呼び出します。これは「汎用」機能の意味ですか?そうであれば、このようにふるまう機能は比較的少ない。他に何か覚えていますか?もしそうなら、より良い例を選んでください。 –
多形性について話していますか?または、多型を追加するために既存のタイプを猿でパッチすることについて話していますか? –
joeforkerはオーバーロードされた関数を実装しようとしています(?およびウィキペディアのリンクに基づいています)。 私は、関数が1つの名前で呼び出されますが、渡されたパラメータに基づいて異なるコードを実行するという意味で、彼は「汎用」を参照していると思います。 したがって: はmy_function(A) - > function_a はmy_functionを実行する(B) - > function_b を実行することが – Mark