小编use*_*ica的帖子

如何检查__str__是否由对象实现

我想__str__在对象尚未实现的情况下动态实现对象的方法.

我尝试使用hasattr(obj, '__str__')它总是返回我的真实,因为它从对象类中提取它.

有没有办法确定对象是否实际实现__str__

我知道我可以使用,inspect.getmembers(obj)但我正在寻找一种更加pythonic的方式

编辑

class Employee(object):
def __init__(self, name, age, emp_code):
    self.name = name
    self.age  = age
    self.emp_code = emp_code
Run Code Online (Sandbox Code Playgroud)

测试

e = Employee("A", 23, "E1")
print hasattr(e, '__str__')
>> True
Run Code Online (Sandbox Code Playgroud)

我希望hasattr返回False,因为Employee类没有实现str

解决方案(感谢所有贡献者,总结如下)

  1. 检查是否False在对象上实现使用object
  2. 要动态添加__str__方法使用hasattr(obj, '__str__')

python

10
推荐指数
1
解决办法
1451
查看次数

反向排序流

我想反向排序下面的流,但得到编译时错误"The method sorted() in the type IntStream is not applicable for the arguments ((<no type> o1, <no type> o2) -> {})".谁能纠正这个

IntStream.range(1, 100)
         .filter(x -> x%2 != 0)
         .sorted((o1,o2) -> -o1.compareTo(o2))
         .forEach(System.out::println);
Run Code Online (Sandbox Code Playgroud)

java sorting java-8 java-stream

10
推荐指数
1
解决办法
763
查看次数

isdecimal和isdigit之间的区别

用于isdigit说明的Python 3 文档

如果字符串中的所有字符都是数字并且至少有一个字符,则返回true,否则返回false.数字包括十进制字符和需要特殊处理的数字,例如兼容性上标数字.形式上,数字是具有属性值Numeric_Type = Digit或Numeric_Type = Decimal的字符.

所以听起来isdigit应该是超集isdecimal.但随后文档isdecimal

如果字符串中的所有字符都是十进制字符并且至少有一个字符,则返回true,否则返回false.十进制字符是来自一般类别"Nd"的字符.此类别包括数字字符,以及可用于形成十进制数字的所有字符,例如U + 0660,ARABIC-INDIC DIGIT ZERO.

这听起来isdecimal应该是一个超集isdigit.

这些方法有何关联?他们中的一个是否匹配另一个匹配的严格超集?Numeric_Type属性是否与Nd类别有关?(这个矛盾的文档是文档错误吗?)

python unicode

9
推荐指数
2
解决办法
1953
查看次数

可以===在==时不持有?

有什么案例吗?

x == y //false
x === y //true
Run Code Online (Sandbox Code Playgroud)

在JS中有可能吗?:)

javascript node.js

9
推荐指数
2
解决办法
198
查看次数

lub(null,Double)是什么?

JLS版本8中的表15.25-B表示条件表达式的类型

true ? null : 0.0
Run Code Online (Sandbox Code Playgroud)

是的lub(null,Double),4.10.4节lub似乎是一些疯狂的难以理解的事情.

这看起来与Double某种类型的类型不同,或者它们可能只是编写Double,就像它们在表中的其他地方所做的那样.但不清楚差异可能是什么.我试图从第4.10.4节开始研究它,但到了我接触到的部分时

让lub(U1 ... Uk)成为:

最佳(W1)&...&Best(Wr)

看起来他们说这种类型是null和Double类型的交集类型,这没有任何意义.

什么是lub(null, Double)?具有此类型的条件表达式与其类型刚刚定义为不同的行为有何不同Double

java types language-lawyer

8
推荐指数
2
解决办法
481
查看次数

Go的sync.Pool源代码中的P是什么意思?

最近,我一直在深入研究Go的源代码.当我查看sync.Pool的细节时,我发现了一条我无法理解的评论.

https://golang.org/src/sync/pool.go?s=1633:1992#L58

// Local per-P Pool appendix.
type poolLocalInternal struct {
    private interface{}   // Can be used only by the respective P.
    shared  []interface{} // Can be used by any P.
    Mutex                 // Protects shared.
}
Run Code Online (Sandbox Code Playgroud)

本地per-P Pool附录.

per-P是什么意思?

只能由相应的P使用

P是什么意思?

go

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

使用有序字典作为有序集

既然Python 3.7使得保留顺序的dicts 正式成为语言规范的一部分而不是实现细节,那么我一直在努力探讨如何最好地使用这个属性.今天,我发现我需要一个订单保留集,并认为字典可以做到这一点.

假设我们有一个hashable元素列表.我们需要一个唯一条目列表,我们希望根据首次出现保留这些条目的顺序.一个简单的字典构造函数应该做的伎俩:

ls = "Beautiful is better than ugly. Explicit..."
uniques = list({s:0 for s in ls})

>>> ['B', 'e', 'a', 'u', 't', 'i', 'f', 'l', ' ', 's', 'b', 'r', 'h', 'n', 'g', 'y', '.', 'E', 'x', 'p', 'c']
Run Code Online (Sandbox Code Playgroud)

这将通过首次出现保留排序并消除所有重复.

我想知道社区对这个用例以及一般的订单保留功能的看法.

  • 有没有理由不使用这种方法?
  • 有没有更好的方法来解决这个问题?
  • 这种方法是Pythonic吗?

通过Python的Zen阅读,我很矛盾.该方法很简单,但依赖于隐式排序.

请让我知道你在想什么.谢谢.

python python-3.x dictionary-comprehension python-3.7

8
推荐指数
2
解决办法
1770
查看次数

比较int和float时Python什么时候进行类型转换?

为什么Python中返回True时,我比较intfloat具有相同价值的物品?

例如:

>>> 5*2 == 5.0*2.0
True
Run Code Online (Sandbox Code Playgroud)

python floating-point int python-3.x python-internals

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

Math.random随机位数

是否有任何关于Math.random应该产生多少随机位的要求?我对Chrome和Firefox的实现进行了一些测试,将结果转换为十六进制以检查位,Firefox 27.0.1给出了类似的结果

0x1.de619579d56f3p-1
0x1.ef1ada9306decp-2
0x1.df3b75e208ce6p-1
Run Code Online (Sandbox Code Playgroud)

而Chrome版本33.0.1750.154米给出

0x1.1190f39c00000p-2
0x1.b959e3b600000p-1
0x1.90f614b400000p-2
Run Code Online (Sandbox Code Playgroud)

相比之下,这是一个神圣的.它似乎是一个32位的结果,而Firefox的值似乎使用53个随机位.

javascript random cross-browser

7
推荐指数
1
解决办法
862
查看次数

什么时候语法上有意义?

A/a案例,不是case案例.

显然case a匹配任何东西并将其绑定到名称a,同时case A查找A变量并匹配任何==认为等于的内容A.这让我感到非常惊讶; 虽然我知道Scala区分大小写,但我从未想过标识符案例会影响解析规则.

Scala的语法是否常常关注标识符的情况,或者是否只有少量的上下文发生这种情况?如果只有少数这样的背景,那么它们是什么?我在Google上找不到任何东西; 我得到的只是关于模式匹配的结果.

scala case-sensitive

7
推荐指数
1
解决办法
120
查看次数