小编Wil*_*ega的帖子

如何避免__init__中的"self.x = x; self.y = y; self.z = z"模式?

我看到像这样的模式

def __init__(self, x, y, z):
    ...
    self.x = x
    self.y = y
    self.z = z
    ...
Run Code Online (Sandbox Code Playgroud)

经常使用更多参数.有没有一种好方法可以避免这种乏味的重复性?该类应该继承namedtuple吗?

python namedtuple python-2.7 python-decorators python-attrs

169
推荐指数
10
解决办法
1万
查看次数

如何使用新数据更新d3.js条形图

我在这里开始使用"让我们制作一个条形图I"示例:http://bost.ocks.org/mike/bar/

而且我很难弄清楚如何使用HTML5元素制作的非常简单的条形图更新新数据.这是我的代码:

<!DOCTYPE html>
<html>
  <head>
    <style>
      #work_queues_chart div {
        font-size: 0.5em;
        font-family: sans-serif;

        color: white;
        background-color: steelblue;

        text-align: right;
        padding: 0.5em;
        margin: 0.2em;
      }
    </style>
    <script src="http://d3js.org/d3.v3.min.js" charset="utf-8" />
    <script type="text/javascript">

      function init() {

        var data = [0, 0, 0, 0, 0, 0];

        /* scale is a function that normalizes a value in data into the range 0-98 */
        var scale = d3.scale.linear()
                      .domain([0, 200])
                      .range([0, 98]);

        var bars = d3.select("#work_queues_chart")
                     .selectAll("div")
                       .data(data)
                     .enter().append("div");

        bars.style("width", function(d) …
Run Code Online (Sandbox Code Playgroud)

charts dynamic d3.js

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

完美转发 - 在Python中

我是一个大量使用继承的Python项目的维护者.有一种反模式导致了我们一些问题并使阅读变得困难,我正在寻找一种解决它的好方法.

问题是将非常长的参数列表从派生类转发到基类 - 大多数但并不总是在构造函数中.

考虑这个人为的例子:

class Base(object):
    def __init__(self, a=1, b=2, c=3, d=4, e=5, f=6, g=7):
       self.a = a
       # etc

class DerivedA(Base):
    def __init__(self, a=1, b=2, c=300, d=4, e=5, f=6, g=700, z=0):
        super().__init__(a=a, b=b, c=c, d=d, e=e, f=f, g=g)
        self.z = z

class DerivedB(Base):
    def __init__(self, z=0, c=300, g=700, **kwds):
        super().__init__(c=c, g=g, **kwds)
        self.z = z
Run Code Online (Sandbox Code Playgroud)

此时,一切看起来都像DerivedA- 长参数列表,所有这些都明确地传递给基类.

不幸的是,我们在过去几年中遇到了一些问题,包括忘记传递参数并获取默认值,以及没有注意到一个派生类中的一个默认参数与默认默认值不同.

它还使代码不必要地笨重,因此难以阅读.

DerivedB是更好并修复这些问题,但有一个新的问题,派生类中的方法的Python帮助/ sphinx HTML文档是误导,因为很多重要的参数都隐藏在**kwds.

有没有办法将正确的签名 - 或者至少是正确签名的文档 - 从基类方法转发到派生类方法?

python python-attrs

8
推荐指数
1
解决办法
1804
查看次数

何时以及为什么要使用attr.Factory?

当我为什么要使用attr.ib(default=attr.Factory(list))attr.ib(default=[])

文档中我看到Factory用于生成一个新值,如果你使用带输入的lambda表达式,这是有意义的; 但是,如果您只是生成一个空列表,我不明白为什么要使用它.

我在这里错过了什么?

python python-3.x python-attrs

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

使用Python创建JSON

我想用Python来创建JSON.

既然我找不到可以帮助我的库,我想知道是否可以检查Python文件中类的顺序?

# example.py
class Foo:
    pass

class Bar:
    pass
Run Code Online (Sandbox Code Playgroud)

如果我导入example,我想知道类的顺序.在这种情况下,它是[Foo,Bar]而不是[Bar,Foo].

这可能吗?如果"是",怎么样?

背景

我对yaml/json不满意.我有一个模糊的想法是通过Python类创建配置(只有类,而不是对象的实例化).

欢迎使用能够帮助我实现目标的答案(使用简单有趣的工具创建JSON).

python configuration introspection python-attrs

3
推荐指数
1
解决办法
689
查看次数

如何从另一个命名元组推导或子类型命名元组?

前言

\n\n

我想知道如何以Python方式概念化数据类。\n特别是我\xe2\x80\x99m 谈论 DTO(数据传输对象)。

\n\n

我在 @jeff-oneill 问题 \xe2\x80\x9c使用 Python 类作为数据容器\xe2\x80\x9d 中找到了一个很好的答案,其中 @joe-kington 很好地使用了内置namedtuple.

\n\n

问题

\n\n

在 python 2.7 文档的第 8.3.4 节中,有一个关于如何组合多个命名元组的很好的示例。\n我的问题是如何实现相反的效果?

\n\n

例子

\n\n

考虑文档中的示例:

\n\n
>>> p._fields            # view the field names\n(\'x\', \'y\')\n\n>>> Color = namedtuple(\'Color\', \'red green blue\')\n>>> Pixel = namedtuple(\'Pixel\', Point._fields + Color._fields)\n>>> Pixel(11, 22, 128, 255, 0)\nPixel(x=11, y=22, red=128, green=255, blue=0)\n
Run Code Online (Sandbox Code Playgroud)\n\n

如何从 \xe2\x80\x9cPixel\xe2\x80\x9d 实例推断出 \xe2\x80\x9cColor\xe2\x80\x9d 或 \xe2\x80\x9cPoint\xe2\x80\x9d 实例?

\n\n

最好是具有蟒蛇精神。 …

python dto namedtuple python-2.7 python-attrs

3
推荐指数
1
解决办法
1159
查看次数

如何使用Python模块“ attrs”实现“ attr.asdict(MyObject)”的反向转换

在Python模块的文档attrs 指出,有一种方法可以将属性的类转换为字典表示形式:

例:

>>> @attr.s
... class Coordinates(object):
...     x = attr.ib()
...     y = attr.ib()
...
>>> attr.asdict(Coordinates(x=1, y=2))
{'x': 1, 'y': 2}
Run Code Online (Sandbox Code Playgroud)

如何实现对立面:Coordinates从有效的字典表示形式中获取的实例,而不使用样板内容,并且对attrs模块感到满意?

python attributes python-attrs

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