栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将基类转换为派生类python(或更扩展类的pythonic方式)

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将基类转换为派生类python(或更扩展类的pythonic方式)

如果您只是添加行为,而不依赖于其他实例值,则可以分配给该对象的

__class__

from math import piclass Circle(object):    def __init__(self, radius):        self.radius = radius    def area(self):        return pi * self.radius**2class CirclePlus(Circle):    def diameter(self):        return self.radius*2    def circumference(self):        return self.radius*2*pic = Circle(10)print c.radiusprint c.area()print repr(c)c.__class__ = CirclePlusprint c.diameter()print c.circumference()print repr(c)

印刷品:

10314.159265359<__main__.Circle object at 0x00A0E270>2062.8318530718<__main__.CirclePlus object at 0x00A0E270>

这与在Python中获得的“转换”非常接近,并且与在C中进行强制转换一样,在不考虑此事的情况下也不应该这样做。我已经发布了一个相当有限的示例,但是如果您可以保持约束(仅添加行为,没有新的实例变量),那么这可能有助于解决您的问题。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/386874.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号