在 Python 上将 `1+1==3` 变为 return True
Turn `1+1==3` to return True on Python
奇怪的问题:我希望这个表达式为真。
1+1==3
,虽然我知道不是:).
if 1+1==3:
print("This is True...")
我知道我可以通过创建 class(比方说 a
)并重载它的 __add__
函数来实现,但它需要我编写 a(1)+a(1)==3
。
我可以不写额外的代码吗(当然我可以前后写代码,但上面的行将保持原样)?
我根据@ddulaney 的建议设法做到了:创建我自己的编解码器 my_true
并编写我自己的 decode
函数。
我有 3 个文件:
- register.py:
import codecs, io, encodings
from encodings import utf_8
def my_true_decode(input, errors="strict"):
raw = bytes(input).decode("utf-8")
code = raw.replace('1+1==3','1+1==2')
return code, len(input)
def search_function(encoding):
if encoding != "my_true":
return None
utf8 = encodings.search_function("utf8")
return codecs.CodecInfo(
name="my_true",
encode=utf8.encode,
decode=my_true_decode,
)
codecs.register(search_function)
- script.py:
# coding: my_true
if 1+1==3:
print("This is True...")
- run.py:
import register
import script
现在运行python3 run.py
输出为This is True...
奇怪的问题:我希望这个表达式为真。
1+1==3
,虽然我知道不是:).
if 1+1==3:
print("This is True...")
我知道我可以通过创建 class(比方说 a
)并重载它的 __add__
函数来实现,但它需要我编写 a(1)+a(1)==3
。
我可以不写额外的代码吗(当然我可以前后写代码,但上面的行将保持原样)?
我根据@ddulaney 的建议设法做到了:创建我自己的编解码器 my_true
并编写我自己的 decode
函数。
我有 3 个文件:
- register.py:
import codecs, io, encodings
from encodings import utf_8
def my_true_decode(input, errors="strict"):
raw = bytes(input).decode("utf-8")
code = raw.replace('1+1==3','1+1==2')
return code, len(input)
def search_function(encoding):
if encoding != "my_true":
return None
utf8 = encodings.search_function("utf8")
return codecs.CodecInfo(
name="my_true",
encode=utf8.encode,
decode=my_true_decode,
)
codecs.register(search_function)
- script.py:
# coding: my_true
if 1+1==3:
print("This is True...")
- run.py:
import register
import script
现在运行python3 run.py
输出为This is True...