2017-12-07 10 views
-1

私はPythonの授業時間の相続(descadent)を作成します。私は次のスクリプトから解決使用しますが、私は「builtin_function_or方法」インスタンスを作成することはできませんメッセージを得ます。問題はどこにあるの?Pythonの継承(OOP)

from time import time as time 
import _classA 

class UserTime(time): 
    def __init__(self): 
     pass 
+0

[メタクラスベースを呼び出すときのエラー:function()引数は、strでなくcodeでなければなりません](https://stackoverflow.com/questions/2231427/error-when-calling-the-metaclass-base -function-argument-1-must-be-code-not) – ezdazuzena

答えて

2

time.timeは、クラスではない関数です。関数から継承することはできません。モジュール時間では、struct_timeはクラスとして定義されています。あなたはそのエラーメッセージを取得している理由は機能ではなく、クラスが、そこにあるインポートしたthe Python docs for time.timetimeに基づいて

from time import struct_time as time 

class MyTime(time) : 
    def __init__(self, time_as_sequence) : 
     time.__init__(self, time_as_sequence) 

     # Do what you like 
0

実際にあなたがしようとしているのは、ILLIGAL :) とにかく、できないクラス時間のメソッドをサブクラス化しようとしています。 はここで少し説明理由です:あなたはtime.timeの上に見ることができるものから、

>>> import time 
>>> type(time.time) 
<class 'builtin_function_or_method'> 
>>> type(time) 
<class 'module'> 

は、(この場合は、クラス「時間」)クラスの組み込み関数やメソッドである、あなたはキャストしても「time」自体に型を入力すると、サブクラス化することはできないタイプのモジュール「module」が生成されます。

import time 
class A(type(time)): 
    pass 

、それは魔法のようにあなたが望むものである種類のクラスの「タイプ」、と回答のようになります。あなたはそれが(私の意見では)役に立たないので、私はreccomendしていない何かができる しかし、あなたの質問に。

>>> type(A) 
<class 'type'> 

しかし、あなたは多分それに対処しなければならないので、私の質問は、実際に何を達成しようとしているのですか?場面の背後にある種類の魔法を、いろいろなやり方で(簡単に)できるようにする必要が本当にありますか?