我有一些同时实现Hash和的结构MyTrait。我将它们用作&MyTrait特征对象。
现在我&MyTrait也想实施Hash。我已经尝试了几件事:
天真地trait MyTrait: Hash {}:
the trait `MyTrait` cannot be made into an object
Run Code Online (Sandbox Code Playgroud)然后我尝试了这个:
impl Hash for MyTrait {
fn hash<H: Hasher>(&self, hasher: &mut H) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
但是我认为我需要委托给hash具体类型的方法self。
因此,天真的下一步是戴上它MyTrait:
fn my_hash<H: Hasher>(&self, hasher: &mut H);
Run Code Online (Sandbox Code Playgroud)
这使我回到了第一点。
我读了一些有关使用特征对象而不是通用参数的内容,这听起来很聪明,因此我将其放在 MyTrait
fn my_hash(&self, hasher: &mut H);
Run Code Online (Sandbox Code Playgroud)
然后,我需要实际执行此操作。最好不要用手为每个特征:
impl<T: 'static + Hash> MyTrait for T {
fn as_any(&self) -> &Any { …Run Code Online (Sandbox Code Playgroud)我希望我的特质取决于 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 生命周期信息,但我找不到任何有关“扩展”特征的信息,所以我可能是错的)。
我正在从客户端建立一个 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 有一个相当长的文档,但尽管如此,我无法找到如何做到这一点。
注意:这是在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模型中删除字段
我试图将一个文件传递给一个程序(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 2.6,我发现的十进制值sqrt(pi)是
Decimal(pi).sqrt()
Run Code Online (Sandbox Code Playgroud)
是否有类似sin,cos或其他(反)三角函数的东西?
该文档只提及如何计算cos和sin计算.Decimal(pi).cos()不存在也不存在from decimal import cos
更新:使用默认三角函数的问题是,Decimal如果我每次想要计算某些东西时将它们从float和back转换它就会失败.(同时Decimal在每个计算周围输入都很烦人,但我想我可以做一个包装函数)
我正在尝试使用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而无需进行任何更改.非常感谢任何提示!
给定一个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)
我猜是有一些并发症或完全不可能.必须有一些规范来定义派生类的位置,这会使事情变得棘手......
我最好的选择是将派生类硬编码到基类中吗?
我正在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) 我在类构造函数中的反射与继承一起使用时遇到问题。具体来说,我想获取所有属性值。
这是一个简单实现的演示,但不起作用:
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为零: …
用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中做什么?
我的代码如下所示:
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) python ×4
rust ×3
django ×2
inheritance ×2
traits ×2
bind ×1
borrowing ×1
callback ×1
compilation ×1
constructor ×1
contenttype ×1
decimal ×1
del ×1
docker ×1
file ×1
generics ×1
http-headers ×1
java ×1
java-8 ×1
javascript ×1
kotlin ×1
ktor ×1
model ×1
precision ×1
rust-cargo ×1
serde ×1
signals ×1
string ×1
subprocess ×1
syncdb ×1
trigonometry ×1
types ×1
websocket ×1