小编dol*_*don的帖子

为什么仅定义 __lt__ 就可以进行 > 操作?

class Node:
    def __init__(self,a,b):
        self._a=a
        self._b=b
    def __lt__(self,other):
        return self._a<other._a


a=Node(1,2)
b=Node(0,4)
print(a>b)
Run Code Online (Sandbox Code Playgroud)

上面的代码显示 True。

class Node:
    def __init__(self,a,b):
        self._a=a
        self._b=b
    def __lt__(self,other):
        return self._a<other._a
    def __eq__(self,other):
        return self._a==other._a

a=Node(1,2)
b=Node(0,4)
print(a>=b)
Run Code Online (Sandbox Code Playgroud)

上面的代码显示了 TypeError: 'Node' 和 'Node.js 实例之间不支持'<='。

为什么仅定义lt就可以进行 >(即gt)操作?为什么同时定义lteq会使 <= 不可能?

python class operator-keyword gt

3
推荐指数
1
解决办法
947
查看次数

cout 宏值未按预期工作

#include<iostream>
using namespace std;

#define C 1<<(8*1)



int main(){
  if(C==256){
    int a=C;
    cout<<a;
  }
}
Run Code Online (Sandbox Code Playgroud)

我的期望是 256,但它打印出 18。这有什么问题吗?谢谢!

c++ printing macros iostream cout

0
推荐指数
1
解决办法
83
查看次数

标签 统计

c++ ×1

class ×1

cout ×1

gt ×1

iostream ×1

macros ×1

operator-keyword ×1

printing ×1

python ×1