小编asd*_*asd的帖子

Python,以正确的方式进行条件导入

现在我有一个叫A的班级.

我有一些像这样的代码..

from my.package.location.A import A

...


foo = A.doSomething(bar)
Run Code Online (Sandbox Code Playgroud)

这很棒.

但是现在我有一个名为A的新版A,但是在另一个包中,但我只想在某个场景中使用其他A. 所以我可以这样做:

if(OldVersion):
    from my.package.location.A import A
else:
    from new.package.location.A import A

...

foo = A.doSomething(bar)
Run Code Online (Sandbox Code Playgroud)

这很好用.但它很难看.我怎么能做得更好?我真的想做这样的事情

from my.abstraction.layer.AFactory import AFactory
...
myA = AFactory.giveMeA() # this looks at "OldVersion" and gives me the correct A
foo = myA.doSomething(bar)
Run Code Online (Sandbox Code Playgroud)

有没有办法让我更轻松?没有工厂层?现在,这可以将我的类上的每个静态方法调用转换为2行.我总是可以在类中保留一个引用以减少影响,但我真的希望python有一个更简单的解决方案.

python import conditional factory-pattern

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

Python List操作

这是我的代码,但它看起来像非python.

def __contains__(self, childName):
    """Determines if item is a child of this item"""
    for c in self.children:
        if c.name == childName:
            return True
    return False
Run Code Online (Sandbox Code Playgroud)

这种做法最"蟒蛇"的方式是什么?使用lambda过滤器功能?出于某些原因,在线实际上很少有例子与您比较属性的对象列表一起使用,它们总是使用实际字符串列表显示如何执行此操作,但这不太现实.

python coding-style list

5
推荐指数
2
解决办法
581
查看次数

Git:如何重新设置refspec

我正在做一些使用gerrit的工作,并且使用gerrit你只能获得提交的refspec.就像是:

refs/changes/01/15501/2
Run Code Online (Sandbox Code Playgroud)

我该如何重置这个?

我试着玩得很开心

[me@server code ((7deac0e...))]$ git reset --hard refs/changes/01/15501/2
fatal: ambiguous argument 'refs/changes/01/15501/2': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions
Run Code Online (Sandbox Code Playgroud)

这不是最好的错误信息,所以我试过agian ......

[me@server code ((7deac0e...))]$ git reset --hard -- refs/changes/01/15501/2
fatal: Cannot do hard reset with paths.
Run Code Online (Sandbox Code Playgroud)

我不需要使用reset --hard,但它在我的情况下会很好用.我的脚本在代码仓库中运行,但我不知道它处于什么状态.只有一个文件可靠且不会更改,这是reset_to_gerrit脚本.

我告诉该脚本重置为一些refspec,并将我的代码仓库放在一个我至少知道会发生什么的地方.原始状态和最终状态之间存在很大的合并冲突的可能性,并且重置应该避免所有这些.

git version-control gerrit

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