我想用可以插入类的方法创建轻量级接口。这是 Scala 中的一个简短示例:
class DB {
def find(id: String) = ...
}
trait Transformation extends DB {
def transform(obj: String): String
override def find(id: String) =
transform(super.find(id))
}
trait Cache extends DB {
val cache = Cache()
override def find(id: String) = {
...
if (cache.contains(id))
cache.find(id)
else {
cache.set(id, super.find(id))
cache.get(id)
}
}
}
使用这些类(特征),我们可以使用 Transformation、Cache 或两者来实例化 DB 类。注意,Transformation 有一个抽象方法 transform,仍然需要在具体类中实现。
new DB() with Transformation {
def transform(obj: String): obj.toLower()
}
new DB() with Cache
new DB() with Transformation with Cache {
def transform(obj: String): obj.toLower()
}
有没有办法在 Python 中实现这样的目标?我知道 Python 有一个 Traits 包,但它的目的似乎不同。