两者之间是否有任何显着差异
pip install -e /path/to/mypackage
Run Code Online (Sandbox Code Playgroud)
和setuptools变种?
python /path/to/mypackage/setup.py develop
Run Code Online (Sandbox Code Playgroud) 在包装(内部)迭代器时,通常必须将__iter__方法重新路由到底层的iterable.请考虑以下示例:
class FancyNewClass(collections.Iterable):
def __init__(self):
self._internal_iterable = [1,2,3,4,5]
# ...
# variant A
def __iter__(self):
return iter(self._internal_iterable)
# variant B
def __iter__(self):
yield from self._internal_iterable
Run Code Online (Sandbox Code Playgroud)
变体A和B之间是否有任何显着差异?Variant A返回iter()已从内部iterable中查询过的迭代器对象.变量B返回一个生成器对象,该对象返回内部可迭代的值.出于某种原因,是其中一种还是其他的?在collections.abc该yield from版本中使用.该return iter()变种是,我已经使用到现在的格局.
假设我们有一个类'Parent',由于某种原因已__new__定义,并且继承了它的类'Child'.(在我的情况下,我试图继承我无法修改的第三方课程)
class Parent:
def __new__(cls, arg):
# ... something important is done here with arg
Run Code Online (Sandbox Code Playgroud)
我的尝试是:
class Child(Parent):
def __init__(self, myArg, argForSuperclass):
Parent.__new__(argForSuperclass)
self.field = myArg
Run Code Online (Sandbox Code Playgroud)
但同时
p = Parent("argForSuperclass")
Run Code Online (Sandbox Code Playgroud)
按预期工作
c = Child("myArg", "argForSuperclass")
Run Code Online (Sandbox Code Playgroud)
失败,因为'Child'试图调用__new__它从'Parent'而不是它自己的__init__方法继承的方法.
为了获得预期的行为,我必须在"儿童"中进行哪些更改?
在我的窗口上有几个GroupBox控件,每个控件包含一个网格控件.对于那些我希望设计风格的网格.但只对那些直接位于GroupBox中的网格,所有其他网格都不应受到影响.
我尝试了以下,但不起作用,因为GetType()不是属性.
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=Parent.GetType()}" Value="{x:Type GroupBox}">
<!-- <Setter Property="..." Value="..."/> -->
</DataTrigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
我找到了一个解决方法,但它并不是一个非常漂亮的解决方案,因为我必须修改GroupBoxes:
<Style TargetType="GroupBox">
<Setter Property="Tag" Value="blub"/>
</Style>
<Style TargetType="Grid">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=Parent.Tag, RelativeSource={RelativeSource Mode=Self}}" Value="blub">
<!-- <Setter Property="..." Value="..."/> -->
</DataTrigger>
</Style.Triggers>
</Style>
Run Code Online (Sandbox Code Playgroud)
显然我可以手动设置每个Grid的样式,但我试图避免这种情况,因为它们中有很多.我希望你能找到一种方法让第一个例子起作用.
我正在玩WPF Binding和变量.显然,只能绑定DependencyProperties.我提出了以下内容,它完全正常:代码隐藏文件:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
public string Test
{
get { return (string)this.GetValue(TestProperty); }
set { this.SetValue(TestProperty, value); }
//set { this.SetValue(TestProperty, "BBB"); }
}
public static readonly DependencyProperty TestProperty = DependencyProperty.Register(
"Test", typeof(string), typeof(MainWindow), new PropertyMetadata("CCC"));
private void button1_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(Test);
Test = "AAA";
MessageBox.Show(Test);
}
}
Run Code Online (Sandbox Code Playgroud)
XAML:
<Window x:Class="WpfApplication3.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:diag="clr-namespace:System.Diagnostics;assembly=WindowsBase"
Title="MainWindow" Height="350" Width="525"
DataContext="{Binding RelativeSource={RelativeSource Self}}">
<Grid>
<TextBox Height="31" HorizontalAlignment="Left" Margin="84,86,0,0" Name="textBox1" VerticalAlignment="Top" Width="152" …Run Code Online (Sandbox Code Playgroud) 我正在包装一个包含结构的C库:
struct SCIP
{
//...
}
Run Code Online (Sandbox Code Playgroud)
以及创建这样一个结构的函数:
void SCIPcreate(SCIP** s)
Run Code Online (Sandbox Code Playgroud)
SWIG生成一个python类SCIP和一个函数SCIPcreate(*args).
当我现在尝试调用SCIPcreate()python时,它显然需要一个类型的参数,SCIP**我应该如何创建这样的东西?
或者我应该尝试SCIP使用SCIPcreate()自动调用的构造函数扩展类?如果是这样,我该怎么办呢?
想象以下三个步骤:
sympy.lambdify(也很慢)将该表达式转换为lambda函数。理想情况下,步骤1和2仅执行一次,而步骤3将被评估多次。不幸的是,第3步的评估会随着时间的流逝而扩展(以及不同的python会话!)
我正在寻找一种将“ lambdified”表达式保存到磁盘的方法,以便以后可以加载和使用它们。不幸的是,泡菜不支持lambda函数。我的lambda函数也使用numpy。
我当然可以手动创建一个匹配函数并使用它,但这似乎效率低下且容易出错。
我正在尝试从容器内部控制主机 docker 服务。
使用 Linux 主机和 Linux 容器通常是这样完成的:
docker run -it -v /var/run/docker.sock:/var/run/docker.sock alpine
我现在想用Docker for Windows主机和 Linux 容器实现相同的目标。
如果尝试了相当多的东西,大多采用DOCKER_HOST具有不同IP的喜欢10.75.0.1:2375(泊坞窗的IP VM), 172.17.0.1:2375(集装箱IP)和0.0.0.0:2375以及192.168.178.xxx:2375(主机IP)。
但显然端口上没有任何响应,2375或者2376我检查了以下内容:
docker run -ti --rm alpine /bin/sh -c "apk add -U nmap && nmap -Pn 10.72.0.1 -p 2375-2376"
在这一点上,我想知道 Docker for Windows 是否可以做到这一点。我发现的大多数信息都与docker-machine / VirtualBox组合有关。
请考虑以下示例:
import sympy
x = sympy.Symbol(x, real=True)
expr = sympy.sin(x) + 1
Run Code Online (Sandbox Code Playgroud)
Sympy能以某种方式确定expr >= 0总是如此吗?
我正在尝试编译一个包含 UndefinedFunction 的表达式,该函数提供了一个实现。(或者:包含符号的表达式,表示对外部数值函数的调用)
有没有办法做到这一点?使用 autowrap 或 codegen 或者对生成的文件进行一些手动编辑?
以下简单的示例不起作用:
import sympy as sp
import numpy as np
from sympy.abc import *
from sympy.utilities.lambdify import implemented_function
from sympy.utilities.autowrap import autowrap, ufuncify
def g_implementation(a):
"""represents some numerical function"""
return a*5
# sympy wrapper around the above function
g = implemented_function('g', g_implementation)
# some random expression using the above function
e = (x+g(a))**2+100
# try to compile said expression
f = autowrap(e, backend='cython')
# fails with "undefined reference to `g'"
Run Code Online (Sandbox Code Playgroud)
编辑:
我有几个大的 Sympy …
这个问题是关于点击包的:
Click 是一个 Python 包,用于以可组合的方式使用尽可能少的代码创建漂亮的命令行界面。它是“命令行界面创建工具包”。它是高度可配置的,但带有开箱即用的合理默认值。
它旨在使编写命令行工具的过程变得快速而有趣,同时还可以防止因无法实现预期的 CLI API 而造成的任何挫折。
我想将 a 添加click.Option到 my click.Command,这会更改该命令的其他参数的行为。考虑以下示例:
@click.option('--x', default=42, prompt=True)
@click.command
def cli_a(x):
print(x)
@click.option('--x', default=42, prompt=False)
@click.command
def cli_b(x):
print(x)
Run Code Online (Sandbox Code Playgroud)
如果cli_a在未明确指定x的情况下调用,则会提示用户提供一个值(或使用 ENTER 确认默认值)。如果cli_b在未指定x默认值的情况下调用,则在不提示用户的情况下使用。
我现在想添加一个标志click.Option,允许用户在上述变体之一之间进行选择(在运行时)。所以,调用cli_c --i会像cli_a,调用cli_c会像cli_b.
@click.option('--i', is_flag=True, default=False, expose_value=False)
@click.option('--x', default=42, prompt=False)
@click.command
def cli_c(x):
print(x)
Run Code Online (Sandbox Code Playgroud)
这对当前的 API 可行吗?可行吗?
类似的用例类似于anwser-all-confimation-prompts-with-yes标志。通常,如果 cli 工具应该可以由用户交互使用并且通过脚本或类似的东西在自动模式下使用,则会出现这种情况。
我正在尝试使用 SymPy 进行一些基本练习。我想对直角坐标中的函数相对于极坐标中的半径参数进行象征性的二阶导数。
我想要一个很好的链式法则符号表达式,它可以计算它可以计算的内容,并保留无法进一步简化的内容。
from sympy import *
init_session()
x, y, r, t = symbols('x y r t') # r (radius), t (angle theta)
f, g = symbols('f g', cls=Function)
g = f(x,y)
x = r * cos(t)
y = r* sin(t)
Derivative(g,r, 2).doit()
Run Code Online (Sandbox Code Playgroud)
这段代码产生0. 有没有办法得到答案的符号表示,而不是 0?
我正在使用Caliburn.Micro编写ViewModel-first MVVM应用程序My View包含第三方UserControl,它实现了我想要/需要从关联的ViewModel调用的方法.如何在坚持MVVM原则的同时做到这一点?
在SO上存在一个旧线程,其中在更具体的上下文中询问类似的问题.如果有人可以充实那里建议的方法,我将不胜感激.
方法一表明View可以订阅IEventAggregator消息.但我不是必须使用代码隐藏文件来做到这一点?(我认为这在MVVM中是一个很大的否定)
关于方法二,我不知道如何做到这一点.关于方法三,这就是我首先尝试的但不知何故我没有完全开始工作.
python ×9
sympy ×4
wpf ×3
binding ×2
c# ×2
xaml ×2
.net ×1
calculus ×1
codegen ×1
derivative ×1
docker ×1
inheritance ×1
iterable ×1
lambda ×1
linux ×1
mvvm ×1
pip ×1
pointers ×1
python-3.x ×1
python-click ×1
setuptools ×1
styles ×1
swig ×1
windows ×1
yield-from ×1