Python继承(OOP)

2024-10-03 11:23:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建python类时间的继承者(descadent)。我使用来自下一个脚本的解算,但是我得到消息无法创建“内置函数或方法”实例。请问哪里有问题?你知道吗

from time import time as time
import _classA

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

Tags: 实例方法函数fromimport脚本消息time
3条回答

time.time是函数而不是类。不能从函数继承。在模块中,timestruct_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

实际上你想做的是非法的:) 不管怎么说,您正在尝试对类时间的方法进行子类化,但您不能这样做。 下面是一个小解释:

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

从上面你可以看到时间。时间是类的内置函数或方法(在本例中是类“time”),即使您将类型强制转换为“time”本身,也会导致类型为“module”的类,您不能同时将其子类化。 但是,你可以做一些我不建议的事情,因为它是无用的(在我看来):

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

它将神奇地成为一个类型“type”的类,这就是你想要的和你问题的答案。你知道吗

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

但你必须以某种方式来处理它,所以我的问题是,你到底想达到什么目的?你真的需要在幕后对一些可以用不同方式(很容易)完成的事情施展魔法吗?你知道吗

基于the Python docs for time.time,您在那里导入的time是一个函数,而不是一个类,这就是为什么您会收到错误消息的原因。你知道吗

datetime.time可能是你需要的。你知道吗

相关问题 更多 >