小编piy*_*iyo的帖子

无法从PyDev中的依赖项目导入模块

我可能在这里做了一些非常愚蠢的事情,但这让我发疯了.

我在Eclipse中有两个PyDev项目.一个项目,"分析"取决于另一个,'PyCommon'.我100%肯定这一点,因为当我查看Analysis的项目引用时,检查PyCommon,并且当我从Analysis中引用PyCommon中的元素时,自动导入/代码完成工作.

我正在尝试在Analysis中编写/运行模块.该模块是fhb/analysis/log_parsers.py.

我正在尝试从PyCommon项目中的fhb/pycommon/types/order_status导入元素OrderStatus.所以,我的import语句是

'来自fhb.pycommon.types.order_status import OrderStatus'

PyDev清楚地知道这是什么原因,因为导入语句是 PyDev 自动编写的.尽管如此,当我尝试在log_parsers.py中运行main函数时,我得到了这个:

回溯(最近一次调用最后一次):文件"/workspace/Analysis/src/fhb/analysis/log_parsers.py",第6行,来自fhb.pycommon.types.order_type import OrderType ImportError:没有名为pycommon.types.order_status的模块

所有这些包都在每个项目中的适当源文件夹('src')下.

另外,即使Analysis绝对设置为引用PyCommon,当我在Analysis的属性中查看PyDev-PYTHONPATH时,只有Analysis自己的src文件夹出现在"源文件夹"选项卡下,如果我单击"添加",它就是我看到的唯一项目源文件夹'

python import dependencies module pydev

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

C++ noexcept声明更改模板推导

我正在修补有效现代C++第91页上的例子,我遇到了一个似乎很奇怪的问题.这段代码

template<typename C>
void doStuff(C& a, C& b) noexcept(noexcept(doStuff(a.front(), b.front()))) {
    std::cout << "container version" << std::endl;
}

template<>
void doStuff<int>(int& x, int& y) noexcept {
    std::cout << "int version" << std::endl;
}

int main() {
    vector<int> v1 = {1, 2, 3};
    vector<int> v2 = {4, 5, 6};
    int x = 5;
    int y = 6;
    doStuff(x, y);
    doStuff(v1, v2);
}
Run Code Online (Sandbox Code Playgroud)

给我一个错误

错误:请求'a'中的成员'front',这是非类型'int'void doStuff(C&a,C&b)noexcept(noexcept(doStuff(a.front(),b.front()) )){

因此,似乎正在调用doStuff的顶级版本,即使a.front()和b.front()应该返回对int的引用.如果我从代码中删除所有noexcept声明,我得到预期的输出.

这是与gcc 5.4.

我究竟做错了什么?

谢谢

c++ templates noexcept

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

在PyYAML中格式化自定义类输出

我在这里做了一个简单的例子,但是文档仍然让我有些困惑.
这是示例代码:

class A(yaml.YAMLObject):
    yaml_tag = u'!A'

    def __init__(self, val):
        self.val = val

if __name__ == '__main__':
    t = datetime.time()
    a = A(t)
    print yaml.dump(a)
    print yaml.load(yaml.dump(a)).val == t
Run Code Online (Sandbox Code Playgroud)

输出是

!一个val:!! python/object/apply:datetime.time ["\ 0\0\0\0\0\0"]

真正

因此,它似乎是忠实的d- /序列化,但默认的时间对象格式留下了一些需要.如何保持我强大的转储/负载能力,让它更漂亮?

谢谢

python yaml pyyaml

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

在 Java 中测试构建器模式

我们在代码库中广泛使用构建器模式,构建的对象都有一个toBuilder()方法。我想编写一个单元测试来确保方法中没有忘记任何字段toBuilder(),即对于任何可构建的对象,我想大致像这样进行测试

MyClass obj = getTestObjectWithRandomData();
assertEquals(obj, obj.toBuilder().build());
Run Code Online (Sandbox Code Playgroud)

现在,我可以很容易地编写一个基本版本,getTestObjectWithRandomData()它使用反射为任何对象的字段分配一堆值。然而,障碍是build()通常包含大量的验证检查,例如,如果某个整数不在合理范围内,则会抛出异常。编写一个getTestObjectWithRandomData()符合所有这些特定于类的验证检查的通用版本是不可能的。

那么,我怎样才能做我想做的事呢?我很想将构造和验证代码分离到不同的方法中,这样测试就不会在验证时出错,但这意味着人们必须记住validate()在创建对象后调用或执行任何操作。不好。

还有其他想法吗?

java unit-testing builder

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

使用包含关键字字符串的变量传递关键字参数

假设我有一个带有此签名的函数:

def foo(a=5, b=10, c=15)
Run Code Online (Sandbox Code Playgroud)

假设我还有一个变量x,其值为'a','b'或'c'.实际上,我想要做的是:

foo(**{x: 7})
Run Code Online (Sandbox Code Playgroud)

但似乎可能有一种更直接的方式来做到这一点.我的怀疑是否正确?

python keyword-argument

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

底层std :: array的正确类型

我对C++很陌生,所以如果答案显而易见,我会道歉.

我一直在编写STL风格的自定义数据结构,以此来提高我的技能.(我实际上对这个结构也有实际需要,但是为了学习目的,我会有点过火.)

这个结构需要动态调整大小(比如矢量),在我的初稿中,我使底层的"容器"成为C风格的数组,并手动完成所有的分配和解除分配.我正在重构,我想使用C++ 11风格的std :: array作为我的底层结构,只是为了让代码更清晰一些.我的问题是我不知道如何以允许调整大小的方式声明数组类成员.由于不同的模板参数需要不同的类型,因此我不能将成员声明为数组,然后在调整大小时将相同的变量分配给数组.

我想为每个可能的大小声明一个成员,比如

private:
    array<T, 8>
    array<T, 16>
    array<T, 32>
    ...
Run Code Online (Sandbox Code Playgroud)

但我不希望每个数组都默认构造T成员.

这里有干净的解决方案吗?或者我只需要坚持使用C风格的数组?

谢谢您的帮助.

编辑:

在重新阅读我的问题后,我认为实际上并不合理.我知道std :: array的大小必须在编译时知道,但出于某种原因我的大脑推断我的目标是不可能的.现在我觉得很明显,我坚持使用C风格的数组和堆.我想我只需要写出来就可以清楚地表达出来.

谢谢你的回答.

c++ arrays std data-structures c++11

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