在Python中使用抽象属性实现以下Scala代码的最短/最优雅的方法是什么?
abstract class Controller {
val path: String
}
Controller
Scala编译器强制使用的子类来定义“路径”。子类如下所示:
class MyController extends Controller {
override val path = "/home"
}
Python有一个内置的异常,尽管直到运行时您都不会遇到该异常。
class Base(object):
@property
def path(self):
raise NotImplementedError
class SubClass(Base):
path = 'blah'
问题内容: 在以下代码中,我创建了一个基本抽象类。我希望所有继承自其的类都提供该属性,因此我将该属性设置为。 然后,我创建了一个名为的子类,该子类旨在提供一些功能,但仍保持抽象。中没有属性,但是python实例化了该类的对象而没有错误。一个人如何创建抽象属性? 问题答案: 从Python 3.3 开始,修复了一个错误,这意味着装饰器现在应用于抽象方法时,可以正确地标识为抽象。 注:订单的问题,你必
问题内容: 我在将继承与Python结合使用时遇到麻烦。尽管对于Java而言,这个概念对我来说似乎太容易了,但到目前为止,我仍然无法用Python理解,这至少令我惊讶。 我有一个原型如下: 在上面的代码中,我如何才能创建一个需要为所有子类实现的抽象方法? 问题答案: 遵循这些思路,使用ABC 另请阅读此优秀教程:http : //www.doughellmann.com/PyMOTW/abc/ 您
问题内容: 定义抽象实例属性而不是属性的最佳实践是什么? 我想写一些像: 代替: 属性很方便,但是对于不需要计算的简单属性来说,这太过分了。这对于将由用户进行子类化和实现的抽象类尤为重要(我不想强迫某人只可以在中编写代码来使用它)。 Python问题中的抽象属性仅建议使用和的答案:它不能回答我的问题。 通过抽象类属性的ActiveState配方可能是正确的方法,但是我不确定。它也仅适用于类属性,不
问题内容: 我是一名 Java 开发人员,对Object Orientation概念有很好的了解( 或者也许我这样认为 )。现在我正在学习设计模式(从头开始设计模式)。我一直在阅读有关OOPS概念抽象的文章,以简要地理解它,而阅读更多有关它的内容,使我比以前更加困惑。 据我了解,抽象是指隐藏程序的内部细节,同时将接口暴露给其他程序员,而无需担心内部细节。但是我不明白 抽象类如何适应这种抽象概念,其
抽象用于向用户隐藏函数的内部功能。他们可以与函数交互并生成结果,但不知道结果是如何生成的。 简单来说,抽象就是用来对用户隐藏不相关的数据,以降低程序的复杂度。 在 Python 中借助 ABC 模块,我们可以实现抽象。 抽象类也可以作为其他类的基石,因为你不能为抽象类创建对象,所以访问元素的唯一方法是使用继承。
问题内容: 我有许多类,它们都共享相同的方法,只是实现方式不同。在Java中,让这些类中的每一个实现一个接口或扩展一个抽象类都是有意义的。Python是否有与此类似的东西,还是我应该采用其他方法? 问题答案: Python接口背后有一个故事。多年来一直保持主导地位的原始态度是您不需要它们:Python在EAFP(更容易要求宽恕而不是允许)原则上工作。也就是说,无需指定接受一个ICloseno