小编jlc*_*lin的帖子

如何在运行时向模块添加属性?

我需要在运行时添加模块属性.例如,加载模块时,它会读取包含数据的文件.我希望这些数据可用作模块属性,但数据仅在运行时可用.

如何在运行时添加模块属性?

python

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

如何删除以前添加的git子树及其历史记录

许多月前我在我的git存储库中添加了一个子树.该子树包含多个文件夹和文件.我添加了子树而不是创建子模块(如推荐的那样).现在我意识到我只想要子树中的一个文件,而不是其他文件.更糟糕的是,当其他人成为clone我的存储库时,他们得到的并不是预期的 - 与子树和我创建的其他代码存在一些冲突.

我可以随身携带文件/文件夹

git rm subtree–folder1 subtree_folder2 subtree_files.*
Run Code Online (Sandbox Code Playgroud)

但是,我仍然从子树中留下了冗长的提交历史.

自从我最初添加子树以来,我已经完成了相当多的开发,并且不会丢失我生成的提交历史记录.

总之,这就是我想要的:

  1. 删除所有子树文件/文件夹.
  2. 忘记所有子树提交的历史.
  3. 只留下我的代码和我的历史.

这可能吗?

PS.一个可能的复杂因素是我将我希望保留的单个头文件从子树移到我代码中的某个文件夹.我希望这不是让我忘记子树历史的原因.

尝试

从远程服务器重新结账后,我有以下内容:

$ ls
.git             CMakeLists.txt   Read.cpp         logging.conf
.gitignore       ENDF6            TestData         src
.sparse-checkout LICENCE          doc              test
.travis.yml      README.md        include          tools
Run Code Online (Sandbox Code Playgroud)

哪里.gitignore只有:build/debug /

当我按照建议尝试命令时,我没有得到非常满意的回复:

$ git filter-branch --index-filter 'git rm --cached -rf test tools src doc LICENCE README.md .travis.yml' HEAD
Rewrite 2fec85e41e40ae18efd1b130f55b14166a422c7f (1/1701)fatal: pathspec 'test' did not match any files
index filter failed: git rm --cached -rf test …
Run Code Online (Sandbox Code Playgroud)

git git-subtree

15
推荐指数
2
解决办法
2万
查看次数

如何在C++ double或int变量中存储某种"null"?

我有一个看起来像这样的课程

struct A {
     double a1;
     int b1;
     double a2;
     int b2;
};
Run Code Online (Sandbox Code Playgroud)

我要读出一个文件值a1,b1,a2,和b2.大多数情况下,所有四个数字都在文件中,但有时只有两个数字.

当有两个数字时,我想将值存储在a1,b1并且我想在" a2和"中存储"无" b2.如果a2b2为指针,我可以将它们分配是nullptr,但他们不是指针.

有什么我可以存储doubleint变量,以表明"没有"存储?

我知道Boost.Optional是可用的,但我正在努力避免使用该库.

c++ null c++11

13
推荐指数
2
解决办法
4万
查看次数

如何在运行时在CTest中传递命令行参数

我正在使用CTest并希望在运行时将命令行参数传递给基础测试.我知道有很多方法可以将命令行参数硬编码到CMake/CTest脚本中,但我想在运行时指定命令行参数,并将这些参数通过CTest传递给基础测试.

这甚至可能吗?

command-line cmake ctest

12
推荐指数
2
解决办法
3084
查看次数

如何在多列上屏蔽numpy结构化数组?

我有一个带有dtype的numpy结构化数组,例如:

A = numpy.empty(10, dtype=([('segment', '<i8'), ('material', '<i8'), ('rxN', '<i8')]))
Run Code Online (Sandbox Code Playgroud)

我知道我可以创建一个面具,例如:

A[A['segment'] == 42] = ...
Run Code Online (Sandbox Code Playgroud)

有没有办法在多列上创建掩码?例如(我知道这不起作用,但我希望它能做到):

A[A['segment'] == 42 and A['material'] == 5] = ...
Run Code Online (Sandbox Code Playgroud)

python numpy mask masked-array

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

在bash中使用正则表达式复制和重命名多个文件

我有一个文件结构,看起来像:

A/
    2098765.1ext
    2098765.2ext
    2098765.3ext
    2098765.4ext
      12345.1ext
      12345.2ext
      12345.3ext
      12345.4ext

B/
    2056789.1ext
    2056789.2ext
    2056789.3ext
    2056789.4ext
      54321.1ext
      54321.2ext
      54321.3ext
      54321.4ext
Run Code Online (Sandbox Code Playgroud)

我需要重命名所有以开头的文件20与启动10; 即,我需要重命名B/2022222.1extB/1022222.1ext

我已经看到了许多关于重命名多个文件的其他问题,但似乎无法使其适用于我的情况.只是为了看看我是否能在我实际尝试复制/重命名之前弄清楚我在做什么:

for file in "*/20?????.*"; do
    echo "{$file/20/10}";
done
Run Code Online (Sandbox Code Playgroud)

但我得到的只是

{*/20?????.*/20/10}
Run Code Online (Sandbox Code Playgroud)

有人能告诉我怎么做吗?

regex bash copy rename

11
推荐指数
2
解决办法
2万
查看次数

Python中计算科学的网格生成

我需要一个Python模块/包,它提供了一个网格,我可以在其上做计算科学吗?我不是在做图形,所以我认为搅拌机包不是我想要的.

有谁知道一个好的包裹?

python math mesh computational-geometry

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

基于列的ViM语法突出显示

我有一个列格式的文本文件,我想在ViM中突出显示.我想突出显示这样的文件:

  • 第1-60列:没有突出显示
  • 第61-65栏:红色
  • 第66-70栏:蓝色
  • 第71-80栏:绿色

我已经看到了基于正则表达式或关键字突出显示的示例,但我不确定如何仅基于文件列来执行此操作.

这甚至可能吗?

vim syntax-highlighting

8
推荐指数
2
解决办法
515
查看次数

C++ 11声明工厂是基类的朋友

我正在尝试为派生类创建一个工厂.我只希望工厂能够创建派生类的实例,所以我已经创建了基础构造函数protected; 派生类只使用基类构造函数,因此它们的构造函数protected也是如此.

我试图将工厂声明为基类的朋友,以便它可以访问protected构造函数.当我使用此命令编译时

clang++ -std=c++11 -stdlib=libc++ Friends.cpp -o Friends
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Friends.cpp:23:20: error: calling a protected constructor of class 'A'
        return new T(i);
               ^
Friends.cpp:42:16: note: in instantiation of function template specialization 'Create<A>' requested
      here
        A* a = Create<A>(1);
           ^
Friends.cpp:30:25: note: declared protected here
             using Base::Base;
                    ^
Run Code Online (Sandbox Code Playgroud)

与派生类的类似错误一起B.

我从stackoverflow.com上读到其他问题的感觉,这在C++ 11中是不可能的,但我不确定为什么.有人可以解释为什么这不起作用,或许可以替代?

示例代码

#include <iostream>

using namespace std;

// Forward declaration
template<class T> T* Create(int i);

class Base {
    public:
        template<class T>
        friend T* …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance factory friend c++11

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

自定义Python切片,请指教

我有一个子类列表对象的类.现在我需要处理切片.从我在intertubes上读到的所有内容中,必须使用该__getitem__方法完成.至少在我正在使用的Python 2.7+中.我已经完成了这个(见下文),但是__getitem__当我传入切片时没有调用该方法.而是完成切片并返回列表.我想返回一个新的myList实例.

请帮我发现错误.

谢谢!

class myList(list):

    def __init__(self, items):

        super(myList, self).__init__(items)
        self.name = 'myList'


    def __getitem__(self, index):

        print("__getitem__")
        if isinstance(index, slice):
            print("slice")
            return self.__class__(
                self[x] for x in range(*index.indices(len(self)))
                )
        else: return super(myList, self).__getitem__(index)

if __name__ == "__main__":
    print("\nI'm tesing out custom slicing.\n")

    N = 10
    L = myList(range(N))

    L3 = L[3]
    L02 = L[:2]
Run Code Online (Sandbox Code Playgroud)

python list slice

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