我尝试覆盖 __and__
,但那是针对 & 运算符,而不是我想要的 and。我能覆盖 and 吗?
有没有办法在Python中覆盖and运算符?
原标题:
最佳回答
你不能覆盖and
、or
和not
布尔运算符。
问题回答
不,你不能覆盖 and
和 or
。由于它们在Python中的行为(即短路行为),它们更像控制流工具而不是运算符,覆盖它们更像覆盖 if
而不是 + 或 -。
你可以通过重写 __nonzero__
(或在 Python 3 中重写 __bool__
)来影响你的对象的真值(即它们是否评估为真或假)。
并不是。短路逻辑运算符没有特殊的方法名称。
尽管您无法过载__and__
,但可以使用中缀来过载and。在这种情况下,您将使用&and&表示and运算符。
相关问题
热门标签
- winforms
- combobox
- fogbugz
- java
- date
- internationalization
- asp.net
- iis
- url-rewriting
- urlrewriter
- c#
- enums
- ocaml
- haxe
- algorithm
- string
- viewstate
- .net
- c++
- c
- symbol-table
- mysql
- database
- postgresql
- licensing
- migration
- vb.net
- vb6
- declaration
- vb6-migration
- python
- psycopg2
- backup
- vmware
- virtualization
- gnu-screen
- authentication
- desktop
- excel
- xll
- cultureinfo
- regioninfo
- oracle
- client
- session
- download
- html
- virtual
- constructor
- scenarios
- perl
- full-text-search
- javascript
- ajax
- testing
- oop
- inheritance
- vim
- encapsulation
- information-hiding