考虑这个课程:
class foo(object):
pass
Run Code Online (Sandbox Code Playgroud)
默认字符串表示形式如下所示:
>>> str(foo)
"<class '__main__.foo'>"
Run Code Online (Sandbox Code Playgroud)
如何将此显示设为自定义字符串?
我有一个像这样定义的多行字符串:
foo = """
this is
a multi-line string.
"""
Run Code Online (Sandbox Code Playgroud)
这个字符串我们用作我正在编写的解析器的测试输入.解析器函数接收一个file-object作为输入并迭代它.它也next()直接调用方法来跳过行,所以我真的需要一个迭代器作为输入,而不是迭代.我需要一个迭代器,迭代遍历该字符串的各个行,就像file一个文本文件的行一样.我当然可以这样做:
lineiterator = iter(foo.splitlines())
Run Code Online (Sandbox Code Playgroud)
有更直接的方法吗?在这种情况下,字符串必须遍历一次以进行拆分,然后再由解析器遍历.在我的测试用例中没关系,因为那里的字符串很短,我只是出于好奇而问.Python为这些东西提供了许多有用且高效的内置插件,但我找不到任何适合这种需求的东西.
在java中我们可以声明一个类似的数组
String[] array = new String[10];
int size = array.length;
Run Code Online (Sandbox Code Playgroud)
这是否意味着数组本身就是一个对象?因为在C++中,数组只是一个指针而没有任何方法.
我有一个列表,其中包含带有转义字符的网址.这些字符是urllib2.urlopen在恢复html页面时设置的:
http://www.sample1webpage.com/index.php?title=%E9%A6%96%E9%A1%B5&action=edit
http://www.sample1webpage.com/index.php?title=%E9%A6%96%E9%A1%B5&action=history
http://www.sample1webpage.com/index.php?title=%E9%A6%96%E9%A1%B5&variant=zh
Run Code Online (Sandbox Code Playgroud)
有没有办法在python中将它们转换回未转义的形式?
PS:URL以utf-8编码
想一想.是否有语义上的区别,还是我们可以自由选择?
编辑我接受了@roygbivs的答案,因为大多数答案都表明这是一个品味选择的问题,而且它并没有真正改变其含义.在这种情况下,由于通过和结束根本不携带任何信息(在该特定上下文中),因此可以省略它们.
基本上我想做这样的事情:
class foo:
x = 4
@property
@classmethod
def number(cls):
return x
Run Code Online (Sandbox Code Playgroud)
然后我希望以下工作:
>>> foo.number
4
Run Code Online (Sandbox Code Playgroud)
不幸的是,上述方法无效.而不是给我4它给我<property object at 0x101786c58>.有没有办法实现上述目标?
我可以使用迭代器(如a )遍历c ++中的标准priority_queue或标准吗?我不想使用pop,因为它导致我的队列出列.queuevector
谢谢你的帮助
假设我有namedtuple这样的:
EdgeBase = namedtuple("EdgeBase", "left, right")
Run Code Online (Sandbox Code Playgroud)
我想为此实现一个自定义哈希函数,所以我创建了以下子类:
class Edge(EdgeBase):
def __hash__(self):
return hash(self.left) * hash(self.right)
Run Code Online (Sandbox Code Playgroud)
由于对象是不可变的,我希望哈希值只计算一次,所以我这样做:
class Edge(EdgeBase):
def __init__(self, left, right):
self._hash = hash(self.left) * hash(self.right)
def __hash__(self):
return self._hash
Run Code Online (Sandbox Code Playgroud)
这似乎有效,但我真的不确定Python中的子类化和初始化,尤其是使用元组.这个解决方案有什么缺陷吗?有推荐的方法怎么做?好吗?提前致谢.
我有一个课我正在添加单元测试.该类有几个构造函数,它们采用不同的类型并将它们转换为规范形式,然后可以将其转换为其他类型.
public class Money {
public Money(long l) {
this.value = l;
}
public Money(String s) {
this.value = toLong(s);
}
public long getLong() {
return this.value;
}
public String getString() {
return toString(this.value);
}
}
Run Code Online (Sandbox Code Playgroud)
实际上,它接受并转换为其他几种类型.
我试图找出测试这些构造函数最合适的方法.
应该有每个构造函数和输出类型的测试:
@Test
public void longConstructor_getLong_MatchesValuePassedToConstructor() {
final long value = 1.00l;
Money m = new Money(value);
long result = m.getLong();
assertEquals(value, result);
}
Run Code Online (Sandbox Code Playgroud)
这导致了许多不同的测试.如你所见,我很难为它们命名.
应该有多个断言:
@Test
public void longConstructor_outputsMatchValuePassedToConstructor() {
final long longValue = 1.00l;
final String stringResult = "1.00";
Money m …Run Code Online (Sandbox Code Playgroud) 目前,我正在使用std::threadC++ 11 实现一个多线程项目.我std::condition_variable用来同步线程.详细地说,一个消费者函数从全局任务队列调用wait()成员函数std::condition_variable等待任务,另一个生成器函数生成并将任务放入队列.但我不知道notify_all()和notify_one()成员函数之间的区别std::condition_variable.我应该在生产者函数中使用哪个函数?谢谢!
python ×5
c++ ×2
class ×2
java ×2
c++11 ×1
escaping ×1
inheritance ×1
iteration ×1
iterator ×1
properties ×1
queue ×1
stl ×1
string ×1
terminology ×1
tuples ×1
unit-testing ×1