我是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) 我正在寻找一种可靠的方法来确定我的模块是从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)只是一个空字符串).
我正在尝试使用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) 在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) 在 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 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 ×6
class ×1
django ×1
inline ×1
jupyter ×1
plotly ×1
python-3.x ×1
sql-server ×1
tensorflow ×1
unique ×1