Python相当于.Net的密封类
python有什么与密封类相似的东西吗?我相信它在Java中也称为最终课程。
换句话说,在python中,我们可以标记一个类,使其永远不会被继承或扩展吗?python是否曾经考虑过具有这种功能?为什么?
免责声明
实际上试图理解为什么密封类甚至存在。答案在这里(和很多,很多,很多,很多,很多,真的很多其他地方)没有满足我的人,所以我试图从不同的角度看。请避免对此问题的理论答案,而要注意标题!或者,如果您坚持要说的话,至少请举
一个 在csharp中使用密封类的非常好且实用的示例,指出如果不密封将破坏大量时间。
我不是这两种语言的专家,但我确实对这两种语言都有一点了解。就在昨天,在使用csharp进行编码时,我了解了密封类的存在。现在我想知道python是否具有与之等效的功能。我相信存在它是有很好的理由的,但是我真的没有。
-
您可以使用元类来防止子类化:
class Final(type): def __new__(cls, name, bases, classdict): for b in bases: if isinstance(b, Final): raise TypeError("type '{0}' is not an acceptable base type".format(b.__name__)) return type.__new__(cls, name, bases, dict(classdict)) class Foo: __metaclass__ = Final class Bar(Foo): pass
给出:
>>> class Bar(Foo): ... pass ... Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 5, in __new__ TypeError: type 'Foo' is not an acceptable base type
这
__metaclass__ = Final
条线使Foo
班级“密封”。请注意,您将在.NET中使用密封类作为性能指标;因为不会有任何子类化方法可以直接解决。Python方法查找的工作方式截然不同,就方法查找而言,使用上面的示例中的元类并没有优点或缺点。
-
相当于Java中的CryptoStream .NET?
2021-01-30 关注 0 浏览96 1答案
-
Java相当于.Net的AutoResetEvent吗?
2021-01-29 关注 0 浏览84 1答案
-
有没有相当于分部类的Python?
2021-01-29 关注 0 浏览61 1答案
-
Java相当于.NET的String.Format
2021-01-30 关注 0 浏览120 1答案
-
类/构造函数的python相当于functools'partial'
2021-01-29 关注 0 浏览60 1答案
-
相当于bwmorph的Python
2021-01-29 关注 0 浏览112 1答案
-
python:Windows相当于SIGALRM
2021-01-29 关注 0 浏览119 1答案
-
Java相当于python“ dir”?
2021-01-29 关注 0 浏览140 1答案
-
相当于php pack的Python
2021-01-29 关注 0 浏览132 1答案
-
相当于Python字典的Java
2021-01-31 关注 0 浏览74 1答案