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

如何根据参数类型重载__init__方法?

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

如何根据参数类型重载__init__方法?

获取“替代构造函数”的一种更整洁的方法是使用类方法。例如:

>>> class Mydata:...     def __init__(self, data):...         "Initialize MyData from a sequence"...         self.data = data...     ...     @classmethod...     def fromfilename(cls, filename):...         "Initialize MyData from a file"...         data = open(filename).readlines()...         return cls(data)...     ...     @classmethod...     def fromdict(cls, datadict):...         "Initialize MyData from a dict's items"...         return cls(datadict.items())... >>> MyData([1, 2, 3]).data[1, 2, 3]>>> MyData.fromfilename("/tmp/foobar").data['foon', 'barn', 'bazn']>>> MyData.fromdict({"spam": "ham"}).data[('spam', 'ham')]

它之所以整洁,是因为毫无疑问期望使用哪种类型,并且您不必强迫猜测调用者打算如何使用它给您的数据类型。问题

isinstance(x,basestring)
在于,例如,即使类型不是基本字符串,调用者也无法告诉您,即使类型不是基本字符串,也应将其视为字符串(而不是其他序列)。也许调用者希望为了不同的目的使用相同的类型,有时作为单个项目,有时作为一系列项目。明确表示将消除所有疑问,并导致更健壮和更清晰的代码。



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

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

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