2017-06-13 6 views
3
def Func(): 
    pass 

IPythonセッションでは、タイプ(Func)を入力すると出力が「関数」になります。 Pythonはオブジェクト指向言語なので、 "Func"がインスタンスであるクラスがあると仮定します。だから私はこのように私自身のクラスを作成してみました:Python - 関数のクラス

class MyFunc(function): 
    pass 

ああ、インタプリタは単に「機能」が定義されていないことを訴えて「NameError」を投げました。 だから、私は少し賢いという試み、これをしなかった:

class myfunc(func.__class__): 
    pass 

ああ、それは...無残要約

TypeError: Error when calling the metaclass bases 
    type 'function' is not an acceptable base type 

を失敗し、誰もが説明できる: 1)。タイプ "function"から派生したクラスを作成する方法。可能でない場合、なぜですか? 2)。そのエラーメッセージが本当に意味するもの。

+0

この質問をお寄せいただきありがとうございます。私はこれまでにこれを行うことは考えていませんでした。 – Ben

+0

Pythonはウサギの穴ですか? –

+3

しかし私はそれがこの答えによって答えられると思う:https://stackoverflow.com/a/10114382/2958070。具体的に[このリンク](http://grokbase.com/t/python/python-list/033r5nks47/type-function-does-not-subtype#20030324rcnwbkfedhzbaf3vmiuer3z4xq) – Ben

答えて

0

要約すれば、誰でも説明できる:1)。タイプ "function"から派生したクラスを作成する方法。

できません。

できない場合、なぜですか? 2)。そのエラーメッセージが本当に意味するもの。

このエラーメッセージは、Pythonがクラスが関数型を基本クラスとして使用できないことを意味します。 Cで実装されているクラスは、特定のフラグを設定した場合にのみ拡張できます。もしそうでなければ、これはあなたがそれらを拡張しようとするときに受けるエラーです。

関連する問題