小编jme*_*jme的帖子

C++:这个模式是否有名称,是否可以改进?

动机

假设我正在Tree上课.我将通过Tree::Node类表示树的节点.类的方法可能返回Tree::Node对象并将它们作为参数,例如获取节点父节点的方法:Node getParent(Node).

我也想SpecialTree上课.SpecialTree应该扩展a的接口Tree并且可以在任何地方使用Tree.

在幕后,TreeSpecialTree可能有完全不同的实现.例如,我可能会使用一个库的GraphA类来实现Tree,所以Tree::Node是一个瘦包装或为一个typedef GraphA::Node.另一方面,SpecialTree可以根据GraphB对象实现,并且Tree::Node包装a GraphB::Node.

我稍后会有处理树的函数,比如深度优先搜索函数.这个功能应该同时接受TreeSpecialTree对象互换.

模式

我将使用模板化接口类来定义树和特殊树的接口.template参数将是实现类.例如:

template <typename Implementation>
class TreeInterface
{
    public:
    typedef typename Implementation::Node Node;

    virtual Node addNode() = 0;
    virtual Node getParent(Node) = 0;

};

class TreeImplementation
{
    GraphA graph;   

    public:
    typedef GraphA::Node Node;

    Node …
Run Code Online (Sandbox Code Playgroud)

c++ oop inheritance templates design-patterns

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

在python中汇总列表中的字符串和整数

我试图在python 2.7中写一个二十一点代码,并且一旦给出输出就无法弄清楚如何求和我的c1和c2.这是我到目前为止:

def blackjackTips(c1,c2):
    print "Welcome to Blackjack!"
    print "Your cards are", name[c1-1],"&",name[c2-1]
    total= sum ([c1]+[c2])
    print "Your card total is",total
name = ('A','2','3','4','5','6','7','8','9','10','J','Q','K')
value = (11,2,3,4,5,6,7,8,9,10,10,10,10)
Run Code Online (Sandbox Code Playgroud)

输出:

>>> blackjackTips(11,6)
Welcome to Blackjack!
Your cards are J & 6
Your card total is 17
Run Code Online (Sandbox Code Playgroud)

*当前语法返回正在计算的错误总和.总和应为16.

有人可以提供指导吗?

谢谢

python python-2.7

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

保持函数命名空间处于活动状态以便在 IPython 中进行调试

在IPython中,有没有办法将函数的命名空间导入到交互环境中?例如,如果我有一个脚本,例如script.py

def foo(x,y):
    z = x + y
    return z

a = 1
b = 2
c = foo(a,b)
Run Code Online (Sandbox Code Playgroud)

在 IPython 提示符下我写:

>> run script.py
Run Code Online (Sandbox Code Playgroud)

中定义的所有内容都script.py成为我环境的一部分,所以如果我写:

>> a
Run Code Online (Sandbox Code Playgroud)

我会回来的1

我想要做的是能够将我调用的函数的名称空间转储到我的解释器名称空间中,以便我可以检查对象。就像是:

>> runfunction foo(1,2)
>> z
Run Code Online (Sandbox Code Playgroud)

并得到 的z值为3

我知道ipdb.set_trace(),我可以将其添加到函数末尾以自动进入调试器,但我可能不想每次都这样做。

如果此功能不存在,出于调试目的检查函数内变量值的推荐方法是什么(尽管可能不是每次运行它时)?

python debugging ipython

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