Python 继承 (OOP)
Posted
技术标签:
【中文标题】Python 继承 (OOP)【英文标题】:Python inheritance (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
【问题讨论】:
Error when calling the metaclass bases: function() argument 1 must be code, not str的可能重复 【参考方案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'>
但是您必须以某种方式处理它,所以我的问题是,您实际上想要完成什么?您真的需要在幕后对可以以不同方式(轻松)完成的事情施展魔法吗?
【讨论】:
以上是关于Python 继承 (OOP)的主要内容,如果未能解决你的问题,请参考以下文章