我们有许多似乎不需要的python类__init__,将它们初始化为空是完全可接受的甚至是更好的.PyLint似乎认为这是一件坏事.我错过了一些有关为什么不是__init__一个坏气味的见解?或者我应该只是压制这些警告并克服它?
我有一堆存储在XML文件中的分层数据.我正在使用TinyXML将其包装在手工制作的类之后.给定一个XML片段,将源签名描述为一组(频率,级别)对,如下所示:
<source>
<sig><freq>1000</freq><level>100</level><sig>
<sig><freq>1200</freq><level>110</level><sig>
</source>
Run Code Online (Sandbox Code Playgroud)
我用这个提取对:
std::vector< std::pair<double, double> > signature() const
{
std::vector< std::pair<double, double> > sig;
for (const TiXmlElement* sig_el = node()->FirstChildElement ("sig");
sig_el;
sig_el = sig_el->NextSiblingElement("sig"))
{
const double level = boost::lexical_cast<double> (sig_el->FirstChildElement("level")->GetText());
const double freq = boost::lexical_cast<double> (sig_el->FirstChildElement("freq")->GetText());
sig.push_back (std::make_pair (freq, level));
}
return sig;
}
Run Code Online (Sandbox Code Playgroud)
其中node()指向<source>节点.
问题:我是否会使用XPath库来获得更整洁,更优雅,更易于维护或更好的代码?
更新:我已经尝试过两种方式使用TinyXPath.它们都没有实际工作,这显然是对他们的一个重点.我做了一些根本错误的事吗?如果这是XPath的样子,我认为这对我没有任何帮助.
std::vector< std::pair<double, double> > signature2() const
{
std::vector< std::pair<double, double> > sig;
TinyXPath::xpath_processor source_proc (node(), "sig");
const unsigned n_nodes = source_proc.u_compute_xpath_node_set();
for (unsigned i = …Run Code Online (Sandbox Code Playgroud) 为什么这个(人为的)示例给出了"错误CS0119:'T'是'类型参数',在此上下文中无效".当然我告诉它类型会有一个合适的方法吗?
abstract class Foo
{
static public bool IsIt() {return true;}
}
class Bar
{
public bool CanIt<T>() where T : Foo
{
return T.IsIt();
}
}
Run Code Online (Sandbox Code Playgroud)
实际的激励示例是模板参数中涉及CRTP的更复杂的事情,但这显示了问题.