理想情况下,我希望能够将赋值重定向到我的类而不是内置的Python类。例如:
class MyInt(int):
def __add__(self, other):
#some type checking logic
#convert string to int if needed
return int(self) + int(other)
# def __everything_else__ ...
a = 1
# sure I could declare:
a = MyInt(1)
# but this isn't ideal because:
b = 2
print a + b # cool, this uses my overload
print b + a # hmmm, not my logic, bad
#Now consider:
c = "1"
print b < c # Does not make sense, really 2 < 1, not very Perly :)
环境是IronPython 2.7 有什么想法吗?我知道强迫人们打字是违背蟒蛇口头禅的,但有时人们需要保护自己,特别是在没有错误的情况下。例证: How does Python compare string and int? 对于我们来说,这是针对python作为脚本环境的大量案例,特别是当我们需要移植Perl代码时(请参阅&#34; 类型,因为您使用&#34; )。 真的,我认为我可能在编译器错误上依赖太多,因为.NET是运行时,但错误不能级联很重要。
答案 0 :(得分:0)
更改文字以使用您的类型并不是您想要的。后 所有,len(事物)不是文字,但你会希望它是一个 我也是。我可能会说你想要的是改变行为 内置类型的混合类型操作,但这不是很普遍 足够。我想你想要的是Perl。如果你想尝试 Python就像Perl一样处于如此低的水平,你会去 遇上数以万计的其他头痛问题。我建议要么坚持 Perl,或更改依赖于Perl样式行为的代码 移植它。
事实上。它不仅仅是一个操作符重载练习,它是语言的核心。有代码,它的行为可能会通过干预基本类型而改变。