我对实际的编程语言还很陌生,而Python是我的第一个。我对Linux有一点了解,足以应付暑假工作(我还在读高中),在工作中,我有很多空闲时间用来学习Python。
一件事一直让我着迷。当您拥有以下表达式时,Python中到底有什么不同?
x.__add__(y) <==> x+y x.__getattribute__('foo') <==> x.foo
我知道什么方法可以做什么,什么东西我可以得到,但是我的问题是:上面的双下划线方法与看起来更简单的等价方法有什么不同?
PS,我不介意接受有关编程历史的讲座,实际上,我发现了解它非常有用:)如果这些主要是Python的历史方面,请随时开始学习。
好吧,对于程序员来说,能力是件好事,因此应该有一种自定义行为的方法。像运算符重载(__add__,__div__,__ge__,…),访问属性(__getattribute__,__getattr__(这两个是不同的充),__delattr__1到相应的方法:,…)等等。在许多情况下,如操作者,通常的语法映射1。在其他情况下,存在一个特殊的过程,该过程有时会涉及调用相应的方法- 例如,__getattr__仅在对象不具有所请求的属性__getattribute__且未实现或引发AttributeError时才调用。其中一些是真正的高级主题,可让您深入了解对象系统的勇气,而很少需要它们。因此,无需全部学习,只需在需要/想要知道时查阅参考。说到参考,在这里。
__add__
__div__
__ge__
__getattribute__
__getattr__
__delattr__