Ale*_*lli 71
正如其他答案所提到的,你确实可以重载运算符(通过定义你正在编写的类中的特殊方法,即名称以两个下划线开头和结尾的方法).所有细节都在这里.
要完成问题的答案:您无法定义新的运算符; 但<<它不是一个新的运算符,它是一个现有的运算符,它通过在类中定义方法来重载__lshift__.
作为一个历史记录,这也是C++中的情况 - 但是你可以重载的确切运算符集在两种语言之间有所不同.例如,在C++中,您不能重载属性访问,.; 在Python中,您可以使用__getattr__(或__getattribute__使用不同的语义)和__setattr__.反之亦然,在Python =(普通赋值)中不是运算符,所以你不能重载它,而在C++中它是一个运算符,你可以重载它.
<<是运营商,并且可以被重载,这两种语言-这是怎么<<和>>,同时不失去自己的左,右偏移的初始内涵,也成为I/O格式化运营商在C++(不是在Python - !).
请参阅:http://docs.python.org/reference/datamodel.html#special-method-names.
类可以通过定义具有特殊名称的方法来实现由特殊语法(例如算术运算或下标和切片)调用的某些操作.这是Python的运算符重载方法,允许类根据语言运算符定义自己的行为.
| 归档时间: |
|
| 查看次数: |
71109 次 |
| 最近记录: |