小编scn*_*erd的帖子

在python中访问超(父)类变量

我是python的新手。我试图使用 super() 方法访问子类中的父类变量,但它抛出错误“无参数”。使用类名访问类变量有效,但我想知道是否可以使用 super() 方法访问它们。

class Parent(object):
        __props__ = (
            ('a', str, 'a var'),
            ('b', int, 'b var')
        )

        def __init__(self):
            self.test = 'foo'

class Child(Parent):
    __props__ = super().__props__ + (
        ('c', str, 'foo'),
    ) # Parent.__props__


    def __init__(self):
        super().__init__()
Run Code Online (Sandbox Code Playgroud)

错误:

    __props__ = super().__props__ + (
RuntimeError: super(): no arguments
Run Code Online (Sandbox Code Playgroud)

python class python-3.x

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

检查模块是否在Jupyter中运行

我正在寻找一种可靠的方法来确定我的模块是从Jupyter笔记本中加载/运行,还是更具体地说,如果ipywidgets可用的话.

这不是其他问题的重复:我发现的其他一切都没有可靠的解决方案,或者(更常见的情况)他们使用Python中常见的"只是尝试它并且轻轻地失败"的方法.就我而言,我正在尝试编写以下逻辑:

if in_jupyter():
    from tqdm import tqdm_notebook as tqdm
else:
    from tqdm import tqdm
Run Code Online (Sandbox Code Playgroud)

我不认为"尝试和失败"是一个合适的解决方案,因为我不想产生任何输出.

到目前为止,我找到的最接近解决方案的是:

from IPython import get_ipython
get_ipython().config['IPKernelApp']['parent_appname'] == 'ipython-notebook'
Run Code Online (Sandbox Code Playgroud)

但是这个配置属性看起来很空traitlets.config.loader.LazyConfigValue(.get_value(None)只是一个空字符串).

python jupyter jupyter-notebook

6
推荐指数
2
解决办法
1330
查看次数

情节:如何使用下拉菜单选择图形源?

我正在尝试使用Plotly和下拉图将多个可选图形嵌入单个图。我遵循了Plotly中的下拉示例,但它们仅显示了如何更改图形特征(如可见或类型),而不显示基础数据。在我的情况下,我有一个固定的X轴,并且想要更改Y值。这是一个可以在jupyter笔记本中运行的最小工作示例:

import plotly
from plotly import graph_objs as go, offline as po, tools
po.init_notebook_mode()

import numpy as np
import json

x = list(np.linspace(-np.pi, np.pi, 100))
values_1 = list(np.sin(x))
values_2 = list(np.tan(x))

line = go.Scatter(
    x=x,
    y=values_1
)

updatemenus = [
    {
        'buttons': [
            {
                'method': 'restyle',
                'label': 'Val 1',
                'args': [
                    {'y': json.dumps(values_1)},
                ]
            },
            {
                'method': 'restyle',
                'label': 'Val 2',
                'args': [
                    {'y': json.dumps(values_2)},
                ]
            }
        ],
        'direction': 'down',
        'showactive': True,
    }
]

layout = go.Layout(
    updatemenus=updatemenus, …
Run Code Online (Sandbox Code Playgroud)

python drop-down-menu plotly

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

内联Python函数

在C程序中,内联函数是一种相当直观的优化.如果内联函数的主体足够小,则最终将跳转保存到函数和创建堆栈帧,并将返回值存储在函数结果存储的任何位置,跳转到内联函数的"body"的末尾"而不是长跳到返回指针.

我有兴趣在Python中做同样的事情,将两个python函数转换为另一个有效的python函数,其中第一个被"内联"到第二个.对此的理想解决方案可能如下所示:

def g(x):
    return x ** 2

def f(y):
    return g(y + 3)

# ... Becomes ...

def inlined_f(y):
    return (y + 3) ** 2
Run Code Online (Sandbox Code Playgroud)

显然,在一种像Python一样动态的语言中,自动执行这一点并非易事.我提出的最好的通用解决方案是使用dict捕获传递给函数的参数,将函数体包装在一个迭代for循环中,用于break跳转到函数的末尾,并将参数的使用替换为索引参数字典.结果如下所示:

def inlined_f(y):
    _g = dict(x=y + 3)
    for ____ in [None]:
        _g['return'] = _g['x'] ** 2
        break
    _g_return = _g.get('return', None)
    del _g
    return _g_return
Run Code Online (Sandbox Code Playgroud)

我不在乎它是否丑陋,但我确实关心它不支持循环内的返回.例如:

def g(x):
    for i in range(x + 1):
        if i == x:
            return i ** 2
    print("Woops, you shouldn't get here") …
Run Code Online (Sandbox Code Playgroud)

python inline abstract-syntax-tree compiler-optimization

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

连接正忙于处理另一个命令的结果,同时正在使用 MARS 连接

在 Django 中尝试使用dumpdata以下命令时:

python manage.py dumpdata --all --output /data/django_dump.json --verbosity 3
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

CommandError: Unable to serialize database: ('HY000', '[HY000] [Microsoft][ODBC Driver 17 for SQL Server]Connection is busy with results for another command (0) (SQLExecDirectW)')
Exception ignored in: <generator object _cursor_iter at 0x7f1c4112b0c0>
Traceback (most recent call last):
  File "/opt/conda/lib/python3.7/site-packages/sql_server/pyodbc/compiler.py", line 133, in _cursor_iter
    cursor.close()
  File "/opt/conda/lib/python3.7/site-packages/sql_server/pyodbc/base.py", line 500, in close
    self.cursor.close()
pyodbc.ProgrammingError: The cursor's connection has been closed.
Run Code Online (Sandbox Code Playgroud)

根据这篇文章的建议,这是我的数据库配置:

DATABASES = {
    'default': {
        'NAME': ...,
        'ENGINE': …
Run Code Online (Sandbox Code Playgroud)

python sql-server django

4
推荐指数
1
解决办法
4009
查看次数

在 Tensorflow 中查找唯一的值对

在 Python 3.X + TensorFlow 中,如果我有两个 TF 向量,point_x 和 point_y(相同形状),分别表示一定数量指针的 X 和 Y 坐标,如何找到所有唯一点?

我能够使用复数向量在 Theano 中将其组合在一起,其中 X 为实数部分,Y 为虚数部分:

complex_points = point_x + point_y * 1j
unique_points, idxs, groups = T.extra_ops.Unique(True, True, False)(complex_points)
Run Code Online (Sandbox Code Playgroud)

我正在尝试的 TF 等效项是:

complex_points = tf.complex(point_x, point_y)
unique_points, groups = tf.unique(complex_points)
Run Code Online (Sandbox Code Playgroud)

TensorFlow 失败并出现以下错误:

InvalidArgumentError: No OpKernel was registered to support Op 'Unique' with these attrs.
... # supported types include the float/int/string types, no complex types
[[Node: Unique_1 = Unique[T=DT_COMPLEX64, out_idx=DT_INT32](Complex_1)]]
Run Code Online (Sandbox Code Playgroud)

显然,没有人实现/注册了“独特”操作的复杂版本。知道如何完成这项任务吗?

python unique tensorflow

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