小编Mar*_*ark的帖子

如何使用通用方法参数创建可哈希的特征对象/特征对象?

我有一些同时实现Hash和的结构MyTrait。我将它们用作&MyTrait特征对象。

现在我&MyTrait也想实施Hash。我已经尝试了几件事:

generics traits rust

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

使用 Serialize 和 DeserializeOwned 作为超级特征时无法解析 `T: serde::Deserialize<'de>`

我希望我的特质取决于 Serde 的特质:

pub trait MyTrait: Serialize + DeserializeOwned {}

#[derive(Serialize, Deserialize)]
pub struct MyStruct<T: MyTrait> {
    value: T,
}

impl MyTrait for i32 {}
impl MyTrait for MyStruct<i32> {}
Run Code Online (Sandbox Code Playgroud)

完整代码

但我收到这个错误:

pub trait MyTrait: Serialize + DeserializeOwned {}

#[derive(Serialize, Deserialize)]
pub struct MyStruct<T: MyTrait> {
    value: T,
}

impl MyTrait for i32 {}
impl MyTrait for MyStruct<i32> {}
Run Code Online (Sandbox Code Playgroud)

我不知道这在这种情况下意味着什么。我不明白它与有关 E0283 的信息有何关系。

(我认为DeserializeOwned就是我想要的基于Serde 生命周期信息,但我找不到任何有关“扩展”特征的信息,所以我可能是错的)。

traits rust serde

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

将自定义标头设置为 websocket 请求 (ktor)

我正在从客户端建立一个 websocket 连接,如下所示:

val client = HttpClient(CIO).config {
    install(WebSockets)
}

client.webSocket(
        method = HttpMethod.Get,
        host = "127.0.0.1",
        port = 8080,
        path = "/api") {

    // Send and receive messages
}
Run Code Online (Sandbox Code Playgroud)

我想做的是将 http 标头添加到此请求中。

Ktor 有一个相当长的文档,但尽管如此,我无法找到如何做到这一点。

websocket http-headers kotlin ktor

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

从标准Django模型中删除字段

注意:这是在AbstractUser存在之前询问的,这可能是您最近想要使用的.

基本上我想从默认的Django User类中删除默认的电子邮件字段...

class MyUser(User):
    field = models.CharField(max_length = 10)
    a = 'hello'
    def b(self):
        print 'world'

del User.email
del MyUser.email
del Myuser.field
Run Code Online (Sandbox Code Playgroud)

所有这些都给出了AttributeError.以下列方式删除方法或属性虽然可以正常工作:

del MyUser.a
del MyUser.b
Run Code Online (Sandbox Code Playgroud)

所以我很好奇为什么这不起作用; 这些模型领域是什么类型的东西?

我尝试的另一件事是通过在MyUser中创建一个email = None覆盖电子邮件,但这也不起作用(并且会稍微丑陋).

提前致谢!

Ps如果你想知道为什么; 它更多的是好奇而不是应用程序真正需要...但我认为不要在数据库中使用未使用的列是好的.Pps我不想更改Django文件以手动从用户删除'email'.

编辑:这里的后续问题(对于那些想要做同样事情的人)在syncdb之前,从标准Django模型中删除字段

django model del

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

Python字符串作为子进程的文件参数

我试图将一个文件传递给一个程序(MolPro),我用Python开始作为子进程.

它通常将文件作为参数,在控制台中如下所示:

path/molpro filename.ext
Run Code Online (Sandbox Code Playgroud)

其中filename.ex包含要执行的代码.或者一个bash脚本(我在Python中尝试做的):

#!/usr/bin/env bash
path/molpro << EOF
    # MolPro code
EOF
Run Code Online (Sandbox Code Playgroud)

我正在尝试在Python中执行上述操作.我试过这个:

from subprocess import Popen, STDOUT, PIPE
DEVNULL = open('/dev/null', 'w')  # I'm using Python 2 so I can't use subprocess.DEVNULL
StdinCommand = '''
    MolPro code
'''

# Method 1 (stdout will be a file)
Popen(['path/molpro', StdinCommand], shell = False, stdout = None, stderr = STDOUT, stdin = DEVNULL)
# ERROR: more than 1 input file not allowed

# Method 2
p = Popen(['path/molpro', StdinCommand], shell …
Run Code Online (Sandbox Code Playgroud)

python string subprocess file

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

Python 2 Decimal的Sin,cos等?

在Python 2.6,我发现的十进制值sqrt(pi)

Decimal(pi).sqrt()
Run Code Online (Sandbox Code Playgroud)

是否有类似sin,cos或其他(反)三角函数的东西?

文档只提及如何计算cossin计算.Decimal(pi).cos()不存在也不存在from decimal import cos

更新:使用默认三角函数的问题是,Decimal如果我每次想要计算某些东西时将它们从float和back转换它就会失败.(同时Decimal在每个计算周围输入都很烦人,但我想我可以做一个包装函数)

python precision trigonometry decimal

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

post_syncdb上不存在ContentType匹配查询

我正在尝试使用post_syncdb信号创建表时立即向数据库添加一些数据.

signals.post_syncdb.connect(init)
Run Code Online (Sandbox Code Playgroud)

然后在init函数中,我想设置权限,所以我使用

ct = ContentType.objects.get(app_label='news', model='Article')
Permission(name='Approve articles', codename='can_approve_article', content_type=ct)
Run Code Online (Sandbox Code Playgroud)

但是,如果我放下所有的桌子并运行syncdb,我会得到

...
File "...\base\functions\init.py", line 11, in init
  ct = ContentType.objects.get(app_label='news', model='Article')
...
django.contrib.contenttypes.models.DoesNotExist: ContentType matching query does not exist.
Run Code Online (Sandbox Code Playgroud)

我做过的一些测试:

  • 如果我在外面尝试这个代码,它工作正常syncdb.
  • 如果我syncdb在没有此代码的情况下创建所有表,它也可以正常工作,然后添加此代码并运行syncdb而无需进行任何更改.
  • 而且我很确定它曾经工作过,但从那时起我在其他地方改变了很多东西,所以我不知道从哪里开始.
  • 我在不同的应用程序中获得了相同的错误.
  • 信号被触发大约10次,只有前几次抛出错误.

非常感谢任何提示!

django signals syncdb contenttype

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

Python继承 - 从基类到派生类

给定一个class和其他类直接或间接地扩展它.有没有办法获得所有直接扩展原始类的类.

class Alpha(object):
    @classmethod
    def get_derivatives(cls):
        return [Beta, ] # when called from Alpha
        return [] # when called from Beta

class Beta(Alpha):
    pass
Run Code Online (Sandbox Code Playgroud)

我猜是有一些并发症或完全不可能.必须有一些规范来定义派生类的位置,这会使事情变得棘手......

我最好的选择是将派生类硬编码到基类中吗?

python inheritance derived-class

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

将货物依赖项缓存在Docker卷中

我正在Docker(rust:1.33.0)中构建一个Rust程序。

每次代码更改时,它都会重新编译(良好),同时也重新下载所有依赖项(不良)。

我以为我可以通过添加来缓存依赖项VOLUME ["/usr/local/cargo"]编辑我也尝试过CARGO_HOME没有运气这个目录。

我认为将其作为卷可以保留下载的依赖项,这些依赖项似乎位于此目录中。

但这没有用,每次仍会下载它们。为什么?


Docker文件

FROM rust:1.33.0

VOLUME ["/output", "/usr/local/cargo"]

RUN rustup default nightly-2019-01-29

COPY Cargo.toml .
COPY src/ ./src/

RUN ["cargo", "build", "-Z", "unstable-options", "--out-dir", "/output"]
Run Code Online (Sandbox Code Playgroud)

刚建docker build .

货代

[package]
name = "mwe"
version = "0.1.0"
[dependencies]
log = { version = "0.4.6" }
Run Code Online (Sandbox Code Playgroud)

代码:你好世界

更改后第二次运行的输出main.rs

...
Step 4/6 : COPY Cargo.toml .
---> Using cache
---> 97f180cb6ce2
Step 5/6 : COPY src/ ./src/ …
Run Code Online (Sandbox Code Playgroud)

compilation docker rust-cargo docker-volume

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

具有继承的构造函数中的反射 (Java)

我在类构造函数中的反射与继承一起使用时遇到问题。具体来说,我想获取所有属性值。

这是一个简单实现的演示,但不起作用:

import java.lang.reflect.Field;

public class SubInitProblem {
  public static void main(String[] args) throws IllegalAccessException {
    Child p = new Child();
  }
}

class Parent {
  public int parentVar = 888888;

  public Parent() throws IllegalAccessException {
    this.showFields();
  }

  public void showFields() throws IllegalAccessException {
    for (Field f : this.getClass().getFields()) {
      System.out.println(f + ": " + f.get(this));
    }
  }
}

class Child extends Parent {
  public int childVar = 999999;

  public Child() throws IllegalAccessException {
    super();
  }
}
Run Code Online (Sandbox Code Playgroud)

这将显示childVar为零: …

java inheritance constructor static-typing java-8

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

Python替代Javascript function.bind()吗?

用Javascript可能会写

var ids = ['item0', 'item1', 'item2', 'item3']; // variable length
function click_callback(number, event)
{
    console.log('this is: ', number);
}
for (var k = 0; k < ids.length; k += 1)
{
    document.getElementById(ids[k]).onclick = click_callback.bind(null, k);
}
Run Code Online (Sandbox Code Playgroud)

因此,即使在调用函数k时它已更改,我也可以将其注册时的值传递给回调函数。

Python有办法做一些等效的事情吗?


具体情况是这样(但我更喜欢一个一般性的答案):

我有可变数量的matplotlib图(每个坐标一个)。每个都有一个SpanSelector,出于某种原因,它被设计为仅将两个极限点传递给回调函数。但是,它们都具有相同的回调函数。所以我有:

def span_selected(min, max):
Run Code Online (Sandbox Code Playgroud)

但是我需要

def span_selected(which_coordinate, min, max):
Run Code Online (Sandbox Code Playgroud)

在注册回调时,我当然知道坐标,但是在调用函数时我需要知道它。在Javascript中,我会做类似的事情

callback = span_selected.bind(null, coordinate)
Run Code Online (Sandbox Code Playgroud)

我将在Python中做什么?

javascript python bind callback

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

为什么 Rust 需要双重借用 (`&amp;&amp;'a mut T`)

我的代码如下所示

pub enum Cache<'a, T> {
    Pending(&'a dyn FnOnce() -> T),
    Cached(T),
}

impl<'a, T> Cache<'a, T> {
    pub fn get(&self) -> &mut T {
        // This caches and borrows the T
    }
}

impl<'a, T> PartialEq for Cache<'a, T>
    where &'a mut T: PartialEq {

    fn eq(&self, other: &Self) -> bool {
        self.get().eq(other.get())
    }
}
Run Code Online (Sandbox Code Playgroud)

但实施Eq失败:

pub enum Cache<'a, T> {
    Pending(&'a dyn FnOnce() -> T),
    Cached(T),
}

impl<'a, T> Cache<'a, T> {
    pub fn …
Run Code Online (Sandbox Code Playgroud)

types rust borrow-checker borrowing

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