小编Bjö*_*lex的帖子

如何为类对象创建自定义字符串表示形式?

考虑这个课程:

class foo(object):
    pass
Run Code Online (Sandbox Code Playgroud)

默认字符串表示形式如下所示:

>>> str(foo)
"<class '__main__.foo'>"
Run Code Online (Sandbox Code Playgroud)

如何将此显示设为自定义字符串?

python class

181
推荐指数
4
解决办法
18万
查看次数

迭代字符串的行

我有一个像这样定义的多行字符串:

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为这些东西提供了许多有用且高效的内置插件,但我找不到任何适合这种需求的东西.

python string iterator

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

数组是java中的对象

在java中我们可以声明一个类似的数组

String[] array = new String[10]; 
int size = array.length; 
Run Code Online (Sandbox Code Playgroud)

这是否意味着数组本身就是一个对象?因为在C++中,数组只是一个指针而没有任何方法.

java

90
推荐指数
6
解决办法
5万
查看次数

解码URL中的转义字符

我有一个列表,其中包含带有转义字符的网址.这些字符是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编码

python escaping

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

它是"迭代"还是"迭代"某些东西?

想一想.是否有语义上的区别,还是我们可以自由选择?

编辑我接受了@roygbivs的答案,因为大多数答案都表明这是一个品味选择的问题,而且它并没有真正改变其含义.在这种情况下,由于通过结束根本不携带任何信息(在该特定上下文中),因此可以省略它们.

iteration terminology

69
推荐指数
5
解决办法
3万
查看次数

如何在Python中创建只读类属性?

基本上我想做这样的事情:

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>.有没有办法实现上述目标?

python properties class

66
推荐指数
5
解决办法
3万
查看次数

如何迭代priority_queue?

我可以使用迭代器(如a )遍历c ++中的标准priority_queue或标准吗?我不想使用pop,因为它导致我的队列出列.queuevector

谢谢你的帮助

c++ queue stl

59
推荐指数
6
解决办法
6万
查看次数

如何为namedtuple的子类提供额外的初始化?

假设我有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中的子类化和初始化,尤其是使用元组.这个解决方案有什么缺陷吗?有推荐的方法怎么做?好吗?提前致谢.

python inheritance tuples

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

如何对构造函数进行单元测试

我有一个课我正在添加单元测试.该类有几个构造函数,它们采用不同的类型并将它们转换为规范形式,然后可以将其转换为其他类型.

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)

java unit-testing

36
推荐指数
3
解决办法
6万
查看次数

std :: condition_variable的notify_all()和notify_one()有什么区别?

目前,我正在使用std::threadC++ 11 实现一个多线程项目.我std::condition_variable用来同步线程.详细地说,一个消费者函数从全局任务队列调用wait()成员函数std::condition_variable等待任务,另一个生成器函数生成并将任务放入队列.但我不知道notify_all()notify_one()成员函数之间的区别std::condition_variable.我应该在生产者函数中使用哪个函数?谢谢!

c++ multithreading condition-variable c++11

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