小编moa*_*tra的帖子

Python字典"加 - 平等"行为

我正在尝试了解使用更新python字典的确切机制d[key] += diff.我有一些辅助类来跟踪魔术方法调用:

class sdict(dict):
    def __setitem__(self, *args, **kargs):
        print "sdict.__setitem__"
        return super(sdict, self).__setitem__(*args, **kargs)
    def __delitem__(self, *args, **kargs):
        print "sdict.__delitem__"
        return super(sdict, self).__delitem__(*args, **kargs)
    def __getitem__(self, *args, **kargs):
        print "sdict.__getitem__"
        return super(sdict, self).__getitem__(*args, **kargs)
    def __iadd__(self, *args, **kargs):
        print "sdict.__iadd__"
        return super(sdict, self).__iadd__(*args, **kargs)
    def __add__(self, *args, **kargs):
        print "sdict.__add__"
        return super(sdict, self).__add__(*args, **kargs)

class mutable(object):
    def __init__(self, val=0):
        self.value = val
    def __iadd__(self, val):
        print "mutable.__iadd__"
        self.value = self.value + val
        return self
    def __add__(self, val): …
Run Code Online (Sandbox Code Playgroud)

python dictionary operators magic-methods mutators

6
推荐指数
1
解决办法
6046
查看次数

可堆叠特征中的继承和代码重用

在这个简化的实验中,我希望能够快速构建一个具有可堆叠特征的类,该类可以报告用于构建它的特征.这让我想起了装饰器模式,但我更喜欢在编译时而不是在运行时实现它.

冗余代码的工作示例

class TraitTest {
  def report(d: Int) : Unit = {
    println(s"At depth $d, we've reached the end of our recursion")
  }
}

trait Moo  extends TraitTest {
  private def sound = "Moo"
  override def report(d: Int) : Unit = {
    println(s"At depth $d, I make the sound '$sound'")
    super.report(d+1)
  }
}
trait Quack extends TraitTest {
  private def sound = "Quack"
  override def report(d: Int) : Unit = {
    println(s"At depth $d, I make the sound '$sound'")
    super.report(d+1) …
Run Code Online (Sandbox Code Playgroud)

inheritance scala traits mixins

5
推荐指数
1
解决办法
1705
查看次数

从一个班轮创建多个新实例

在Coursera 的"反应式编程原理"课程的第二周讲座中,有一个例子包含了这段有趣的代码:

val notIn1, notIn2, notOut = new Wire
Run Code Online (Sandbox Code Playgroud)

这里使用的语言功能是什么?

这会创建三个唯一的实例(向构造函数添加println会打印3行),因此它不会被转换为类似的东西

val notIn1 = notIn2 = notOut = new Wire
Run Code Online (Sandbox Code Playgroud)

调用的结果new Wire不会返回元组,所以我不认为它是模式匹配.有任何想法吗?

scala initialization variable-assignment

2
推荐指数
1
解决办法
78
查看次数