小编Shi*_*oir的帖子

对象文字是Pythonic吗?

JavaScript有对象文字,例如

var p = {
  name: "John Smith",
  age:  23
}
Run Code Online (Sandbox Code Playgroud)

和.NET有匿名类型,例如

var p = new { Name = "John Smith", Age = 23}; // C#
Run Code Online (Sandbox Code Playgroud)

类似的东西可以通过(ab)使用命名参数在Python中模拟:

class literal(object):
    def __init__(self, **kwargs):
        for (k,v) in kwargs.iteritems():
            self.__setattr__(k, v)
    def __repr__(self):
        return 'literal(%s)' % ', '.join('%s = %r' % i for i in sorted(self.__dict__.iteritems()))
    def __str__(self):
        return repr(self)
Run Code Online (Sandbox Code Playgroud)

用法:

p = literal(name = "John Smith", age = 23)
print p       # prints: literal(age = 23, name = 'John Smith')
print p.name …
Run Code Online (Sandbox Code Playgroud)

python object-literal

42
推荐指数
3
解决办法
2万
查看次数

面向对象编程中有哪些数学对偶?

如果你最近看过Channel9的Going Deep节目,那么一个经常提到的话题就是编程中的数学二重性.TomasP有一篇关于面向对象编程的二元性的博客文章.

自从Microsoft Research发现观察者设计模式实际上是迭代器模式的数学对偶以来.从那以后,他们以各种方式使用了二元概念.

我的问题是:

编程中有哪些数学对偶?

面向对象编程是一个良好的开端.主要的GoF设计模式是:装饰器,状态,迭代器,外观,策略,代理,工厂方法,适配器,观察者,模板方法,复合,单例,抽象工厂和命令.是一个很好的对象 - 海报.

oop design-patterns category-theory

15
推荐指数
1
解决办法
653
查看次数