返回介绍

第一个例子

发布于 2024-01-29 22:24:14 字数 872 浏览 0 评论 0 收藏 0

为了说明如何把这些转换成有用的代码,如下的类使用一个特性来记录对一个名为name的属性的访问,实际存储的数据名为_name,以便不会和特性搞混了:

Python 2.6和Python 3.0中都可以使用特性,但是,它们要求在Python 2.6中派生一个新式对象,才能使赋值正确地工作——为了在Python 2.6中运行代码,这里把对象添加为一个超类(我们在Python 3.0中也可以使用超类,但是,这是暗含的,并且不是必需的)。

这个特定的特性所做的事情并不多——它只是拦截并跟踪了一个属性,这里将它作为展示协议的一个例子。当这段代码运行的时候,两个实例继承了该特性,就好像它们是附加到其类的另外两个属性一样。然而,捕获了它们的属性访问:

就像所有的类属性一样,实例和较低的子类都继承特性。如果我们把例子修改为如下所示:

输出是同样的。Person子类从Super继承了name特性,并且bob实例从Person获取了它。关于继承,特性的方式和常规方法是一样的;由于它们能够访问self实例参数,所以它们可以访问像方法这样的实例状态信息,就像下面小节所介绍的一样。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文