我可以在Python中更改变量的默认类型吗?

时间:2014-03-27 11:25:27

标签: python python-2.7 ironpython

理想情况下,我希望能够将赋值重定向到我的类而不是内置的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是运行时,但错误不能级联很重要。

1 个答案:

答案 0 :(得分:0)

  

更改文字以使用您的类型并不是您想要的。后   所有,len(事物)不是文字,但你会希望它是一个   我也是。我可能会说你想要的是改变行为   内置类型的混合类型操作,但这不是很普遍   足够。我想你想要的是Perl。如果你想尝试   Python就像Perl一样处于如此低的水平,你会去   遇上数以万计的其他头痛问题。我建议要么坚持   Perl,或更改依赖于Perl样式行为的代码   移植它。

事实上。它不仅仅是一个操作符重载练习,它是语言的核心。有代码,它的行为可能会通过干预基本类型而改变。