【问题标题】:Python inheritance (OOP)Python 继承 (OOP)
【发布时间】:2018-05-21 08:56:10
【问题描述】:

我想创建 python 类时间的继承者(descadent)。我使用下一个脚本求解,但我得到消息 cannot create "builtin_function_or method" instance。请问哪里有问题?

from time import time as time
import _classA

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

【问题讨论】:

标签: python


【解决方案1】:

time.time 是一个函数而不是一个类。您不能从函数继承。在模块时间struct_time被定义为一个类。

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

【讨论】:

    【解决方案2】:

    基于the Python docs for time.time,您导入的time 是一个函数,而不是一个类,这就是您收到该错误消息的原因。

    datetime.time 可能是您需要的。

    【讨论】:

      【解决方案3】:

      实际上你想要做的是非法的 :) 无论如何,您正在尝试子类化您不能做的上课时间的方法。 这里有一点解释为什么:

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

      从上面你可以看到 time.time 是一个类的内置函数或方法(在这种情况下,类“time”),即使你在“time”本身上强制转换类型,也会产生一个类类型为“模块”,您也不能对其进行子类化。 但是,你可以做一些我不推荐的事情,因为它没用(在我看来):

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

      它会神奇地成为“类型”类型的类,这是您想要的并回答您的问题。

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

      但是您必须以某种方式处理它,所以我的问题是,您实际上想要完成什么?您真的需要在幕后对可以以不同方式(轻松)完成的事情施展魔法吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-18
        • 2015-10-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多