Python是完全面向对象的:可以定义自已的类,从自已的或内置类进行继承,然后对生成的类进行实例化。
在Python中定义类很简单;就象定义函数,没有独立的定义接口。只要定义类,然后编码就可以了。Python类以保留字 class 开始,跟着是类的名字。从技术上说,有这些就足够了,因为一个类不需要从任何其它类继承而来。
class foo: pass
当然,实际上大多数的类将从其它的类继承来的,并且它们将定义自已的类方法和属性。但是如你所见,除了名字以外,没有什么东西是一个类必须拥有的。特别是,C++程序员可能会感到奇怪,Python的类没有明确的构造器和析构器。Python类的确存在同一个构造器相似的东西: __init__ 方法。
from UserDict import UserDict class FileInfo(UserDict): "store file metadata" def __init__(self, filename=None): UserDict.__init__(self) self["name"] = filename
噢。我知道有很多知识需要吸收,但是你要掌握它。所有的Python类以相同的方式工作,所以一旦你学会了一个,就是学会了全部。再加上,在Python社区中有强烈的习惯,对于每个类方法的第一个参数都命名为“self”,所以你不会浪费大量时间去习惯他人的风格。如果你忘了别的任何事,也要记住这件事,因为我认定它会让你出错:
__init__ 方法是可选的,但是一旦你定义了一个,就必须记得显示调用父类的 __init__ 方法。这样更是正确的:何时一个子类想扩展父类的行为,后代方法必须在适当的时机,使用适当的参数,显式调用父类方法。 |