【发布时间】:2011-02-13 17:48:28
【问题描述】:
在 Python 中用抽象属性实现以下 Scala 代码的最短/最优雅的方法是什么?
abstract class Controller {
val path: String
}
Scala 编译器强制使用Controller 的子类来定义“路径”。子类如下所示:
class MyController extends Controller {
override val path = "/home"
}
【问题讨论】:
-
你试过什么?如果您对解决方案有任何问题或疑问,请发布您的 Python 代码。
-
“Scala 编译器强制使用 Controller 的子类来定义“路径”。” ... 什么时候强制执行?如果是编译时间,那你就不走运了。如果它是运行时的,那么您究竟希望它如何“强制执行”?换句话说,引发 AttributeError 和 NotImplementedError 有区别吗?为什么?
-
我知道 Python 是一种动态语言,python 解释器不能强制执行静态类型。对我来说重要的是,它尽可能早地失败,并且很容易找到错误发生的位置和原因。
-
对于较新的副本有一些相关答案:stackoverflow.com/questions/23831510/…,但基本上得出的结论是,从 python 3.8 开始,没有好的解决方案。
标签: python oop scala abstract-class