- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在 python 中我们可以说:
if foo < bar < baz:
do something.
类似地,我们可以重载比较运算符,例如:
class Bar:
def __lt__(self, other):
do something else
但是那些区间比较的操作数类型实际上调用了哪些方法呢?以上等同于
if foo.__lt__(bar) and bar.__lt__(baz):
do something.
编辑:关于 S.Lott,这里有一些输出有助于说明实际发生的情况。
>>> class Bar:
def __init__(self, name):
self.name = name
print('__init__', self.name)
def __lt__(self, other):
print('__lt__', self.name, other.name)
return self.name < other.name
>>> Bar('a') < Bar('b') < Bar('c')
('__init__', 'a')
('__init__', 'b')
('__lt__', 'a', 'b')
('__init__', 'c')
('__lt__', 'b', 'c')
True
>>> Bar('b') < Bar('a') < Bar('c')
('__init__', 'b')
('__init__', 'a')
('__lt__', 'b', 'a')
False
>>>
最佳答案
if foo < bar < baz:
相当于
if foo < bar and bar < baz:
有一个重要的区别:如果 bar 是变异的,它将被缓存。即:
if foo < bar() < baz:
相当于
tmp = bar()
if foo < tmp and tmp < baz:
但要回答您的问题,最终会是:
if foo.__lt__(bar) and bar.__lt__(baz):
关于python - `foo < bar < baz` 实际调用了哪些方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4200822/
我遇到了这段代码;我好奇地尝试编写类似的代码结构。我不谈论地理位置。 navigator.geolocation.getCurrentPosition(getPosition); fu
基本上我希望能够获取 url 的结尾,并将其转换为字符串以在某处使用。 目前我正在这样做(这不是最佳选择): // grab the path, replace all the forward sla
运行 Composer 的 update 时, install , require , dump-autoload , 等等。;我突然开始收到一条黄色的弃用通知,上面写着: Class Foo\Bar
我知道 & 会禁用原型(prototype),但括号也不会这样做。这两个代码块有什么不同,顶部不能像底部一样运行是否有原因, use List::Util; use constant FOO => (
我目前正在学习 JavaScript。我遇到了这个问题,并尝试在 javacript 中使用柯里化(Currying)来解决它,但无法完全正确地解决它。 给定一个函数 pipe(),它接受多个函数作为
我一直想知道 foo、bar、baz 等... 名字的意思。 我曾多次在科学文章中发现这些术语。此外,该术语以某种方式用作其他示例的标准。 有谁知道这些术语的来源,以及如何正确使用它们? 最佳答案 虽
指定如下规则是什么意思? foo: bar : baz 我明白 foo是一个目标,bar和 baz是先决条件,但为什么 bar 之间还有另一个冒号和 baz - 那个冒号是什么意思? 最佳答案 您想到
在 python 中我们可以说: if foo >> class Bar: def __init__(self, name): self.name = name
我想要一个正则表达式来匹配更广泛的表达式中除了几个特定选项之外的所有内容。 以下示例将匹配 test_foo.pl 或 test_bar.pl 或 test_baz.pl: /test_(foo|ba
这个问题已经有答案了: How can I find all placeholders for str.format in a python string using a regex? [duplic
我需要创建一个 JavaScript RegExp 对象,如果被测试的字符串不包含“foo”且不包含“bar”且不包含“baz”,该对象将返回 true。 这是一般的想法...我有一个很大的结果集。我
我想提供一个可以覆盖的默认值。我知道我可以使用三元,如下所示: (def foo (if (not (nil? bar)) bar baz)) 但在 Clojure 中肯定有一种更惯用的方式来表示“使
我正在阅读 dispatch 的代码,并遇到了这个 file ,其中,它说: object Elem extends (Res => scala.xml.Elem) { def apply(res
一个简单的问题:如果我有这样一行: int foo::bar::baz() {... 这是如何解释的? baz() 是函数名,但是“foo”是一个类还是一个命名空间? “bar”是类还是子类还是什么?
如何在 PHP5 类中创建链接对象?示例: $myclass->foo->bar->baz(); $this->foo->bar->baz(); Not: $myclass->foo()->bar()
这是我正在尝试做的一个精简的例子。 #!/usr/bin/env bash set -x echo "$@" 调用它 bash script -vv --foo='bar baz' 产量 + echo
我想知道 e 之间的这种光学不匹配是否有充分的理由。 G。模式匹配,它使用一个简单的 case foo => 表示不应采取任何行动。 有这样的东西不是很合理吗 import foo.bar.{Baz
我不喜欢附加到 ConcurrentDictionary 的方法。 AddOrUpdate 需要一个 func,而 GetOrAdd 在您只是寻找键以获取值时添加。所以我想像普通字典一样使用它(为了安
是否有模块能够做到这一点,还是我应该自己写一些东西? 最佳答案 这是怎么回事: >>> os.path.normpath("/bar/foo/baz/../..") "/bar" 关于python -
我不确定它到底叫什么,但我想知道如何创建一个可以在一次调用中调用多个方法的类。例如,使用一个 android 类,但这并不重要,您可以一次调用该类的所有方法: AlertDialog.Builder(
我是一名优秀的程序员,十分优秀!