Python不使用普通的OOP,如Java和C#使用其基类Object
或object
,Python使用特殊的方法来处理对象的基本行为。 Python使用__str__
当对象被传递给print
它用于:Python中不常见OOP的原因是什么?
>>> class Demo:
>>> def __str__(self):
>>> return "representation"
>>> d = Demo()
>>> print(d)
representation
同样与len
:
>>> class Ruler:
>>> def __len__(self):
>>> return 42
>>> r = Ruler()
>>> len(r)
42
什么我希望是这样的:
>>> class Ruler:
>>> def len(self):
>>> return 42
>>> r = Ruler()
>>> r.len()
42
什么间接使用特殊方法而不是直接调用常用方法的原因是什么?
至于\ _ \ _海峡\ _ \ _,按我的理解,它严格等同于Java/C#的toString。 \ _ \ _ str \ _ \ _给出了对象的文本表示,这与打印的内容明显不同 - 将文本表示打印到标准输出。 – ChrisJ 2011-02-25 20:08:18
这是你的意思吗? http://docs.python.org/faq/design.html#why-does-python-use-methods-for-some-functionality-eg-list-index-but-functions-for-other-eg-len-列表 – 2011-02-25 20:16:00
@Thomas是的,这就是答案。也许你想写它作为答案... – deamon 2011-02-25 20:19:04