![]() |
1
1103
总结其他(已经很好了!)答案,
当然,在Python中,您通常希望您的代码支持继承(因为继承非常方便,所以最好不要让代码使用您的继承!)如此
不是那样的
你可以这么说
政治公众人物清楚地表明,虽然ABC通常可以代替鸭子打字,但一般来说,这样做没有很大的压力(见
here
)但是,在最近的python版本中实现的abc确实提供了额外的好处:
有关Python2.6中提供的ABC支持的底层机制,请参见 here ;对于3.1版本,非常相似,请参见 here .在两个版本中,标准库模块 collections (这是3.1版本对于非常相似的2.6版本,请参见 here )提供几种有用的ABC。
为了回答这个问题,与传统的python混合类(如
UserDict.DictMixin
)是他们做的吗
|
![]() |
2
287
这就是为什么
在这种情况下,卡车对象是一辆车,但您将得到:
换言之,
|
![]() |
3
78
类型检查方式
允许子类实例和多个可能的基:
而类型检查
仅支持引用的类型。
作为旁白,
因为类是单件的。 避免类型检查-使用多态性(duck类型)在Python中,通常您希望为参数允许任何类型,并按预期处理它,如果对象的行为不符合预期,它将引发适当的错误。这被称为多态性,也被称为鸭型。
如果上面的代码有效,我们可以假定我们的论点是一只鸭子。因此,我们可以将其他东西传递给鸭子的实际子类型:
或者像鸭子一样工作:
我们的代码仍然有效。 但是,在某些情况下,需要显式地进行类型检查。 也许您对不同的对象类型有一些明智的做法。例如,可以从dicts构造pandas数据帧对象 或 记录。在这种情况下,您的代码需要知道它得到的参数类型,以便它能够正确地处理它。 所以,要回答这个问题:
之间的差异
|
![]() |
4
58
后者是首选的,因为它将正确处理子类。事实上,您的示例更容易编写,因为
或者,使用
|
![]() |
5
11
根据python文档,这里有一个声明:
所以
|
![]() |
6
0
对于真正的差异,我们可以在
不过我们也能买到类似的 abc.__instancecheck__ 根据 __instancecheck__ .
自上而下
我得出这个结论,
为了
为了
顺便说一句:最好不要混用
|
![]() |
Schadre · C-plus编码错误 2 年前 |
![]() |
Nithin K · 即使类属性的类型正确,也会获取异常 2 年前 |
![]() |
amirreza870 · Python OOP-更改类文本 2 年前 |
![]() |
A_K · 使用cat或打印方法打印部分内容的子集闭包 3 年前 |
![]() |
Mo Fatah · 如何使用Python类打印数独板? 3 年前 |