当前位置: 首页 > wzjs >正文

做企业网站需要收费吗百度推广咨询

做企业网站需要收费吗,百度推广咨询,优化电池充电什么意思,上海网站制作任务 想避免编写和维护一种烦人的几乎什么也不做的__init__方法,这种方法中含有一大堆形如 self.something something 的赋值语句。 解决方案 可以把那些属性赋值任务抽取出来置入一个辅助函数中: def attributesFromDict(d):self d.pop(self)for n,y in d.iteritems():s…

任务

想避免编写和维护一种烦人的几乎什么也不做的__init__方法,这种方法中含有一大堆形如 self.something = something 的赋值语句。

解决方案

可以把那些属性赋值任务抽取出来置入一个辅助函数中:

def attributesFromDict(d):self = d.pop('self')for n,y in d.iteritems():setattr(self,n,v)

而__init__方法里的那种千篇一律的赋值语句大概是这个样子的:

def __init__(self,foo,bar,baz,boom=1,bang=2):self.foo = fooself.bar = barself.baz = bazself.boom = boomself.bang = bang

现在可以被缩减为清晰的一行:

def __init__(self,foo,bar,baz,boom=1,bang=2):attributesFromDict(locals())

讨论

如果__init__的主体中没有其他的逻辑,调用内建函数locals 返回的 dict 只包含了被传递给__init__的参数(包括那些并未被传递但却有默认值的参数)。首先函数attributesFromDict 获取对象,假定这个对象是一个名字为“self”的参数,然后将其他的所有元素作为它的属性名进行设置。一个相似但更简单的技术是,不使用辅助函数而是像下面这样:

def __init__(self,foo,bar,baz,boom=1,bang=2):self.__dict__.update(locals())del self.self

不过,后来给出的这种技术同解决方案给出的方法相比,有一个重大的缺陷:它直接设置 self.__dict__中的属性(通过update方法),对于一些特性(property)和高级描述符(descriptor),它无法正常地工作。而解决方案给出的方法使用了内建的 setattr,在这方面表现得很完美。

attributesFromDict 并不适用于使用了更多代码尤其是使用了本地变量的__init__ 方法因为对于传递给它的唯一的字典参数,attributesFromDict无法区分字典里的传递给__init__的参数以及__init__内部的局部变量。如果你在辅助函数中加入一点内省的能力,这个限制就可以被打破:

def attributesFromArguments(d):self = d.pop('self')codeObject = self.__init__.im_func.func_codeargumentNames = codeObject.co_varnames[1:codeObject.co_argcount]for n in arqumentNames:setattr(self,n,d[n])

通过获取__init__方法的代码对象,attributesFromArguments 函数能够只处理传递给__init__ 的参数名。因此你的__init__方法应当调用 attributesFromArguments(locals( )),而不是 attributesFromDict(locals()),在这个调用之后如果还有需要,可以继续加入更多代码并定义其他局部变量。

attributesFromArguments 最关键的限制是它不支持__init__ 的某种特殊参数,即kw。我们可以通过引入更多的内省来获得处理kw的能力,但那就要求使用更多的黑魔法和引入更多的复杂性,比起获得的这点功能似乎有些不值得。如果你确实想在这方面做些探索,为了实现内省,应当使用标准库的inspect模块,而不是在attributesFromArguments函数中自己实现这个功能。通过使用 inspect.getargspec(self.init),你能够同时知道参数名以及 self.__init__是否接受**kw 形式的参数。关于 insepectgetargspec 的更多信息请参看6.19 节。最后,请记住 Python 编程中的一个至理名言:“尽最用标准库搞定一切!”

http://www.dtcms.com/wzjs/121574.html

相关文章:

  • 有什么做宝宝辅食的网站吗seo优化就业前景
  • 网站的构架与组成广告联盟广告点击一次多少钱
  • 网站域名使用方法一个网站的seo优化有哪些
  • 网站服务器用什么系统百度收录量查询
  • 百度怎么搜索到自己的网站网站推广的方法有哪几种
  • 电影网站开发背景重庆网站seo技术
  • 一键生成作文的网站咖啡的营销推广软文
  • 重庆网站制作的网站网络营销系统
  • 做美食推广的网站有哪些注册网站平台要多少钱
  • 福州有哪些制作网站公司关键词长尾词优化
  • 搜索引擎的工作原理是什么?相关搜索优化软件
  • 上海网络推广百橙东莞seo排名公司
  • 网站上名片如何做最吸引人的引流话术
  • 太原网站建设 thinkphp3.2花都网站建设公司
  • 新彊生产建设兵团网站电商网站建设开发
  • 多个图表统计的网站怎么做百度搜索什么关键词排名
  • 网站权限网站制作论文
  • 做的比较好的教育网站网络营销的概念
  • 论坛类的网站怎样做郑州seo多少钱
  • 做网站手机软件免费人脉推广软件
  • 徐汇做网站杭州seo培训
  • 西宁网站建设开发上海疫情又要爆发了
  • 关于网站建设方案百度指数关键词搜索趋势
  • 新疆网站党建设备世界杯比分查询
  • 做外贸网站建设网络营销策划目的
  • 买app的网站建设seo网站优化方案案例
  • 民治营销型网站制作天津百度推广电话
  • 新疆做网站检测网站是否安全
  • 网站链接视频怎么做外贸定制网站建设电话
  • 网站建设公司 南京精准拓客软件哪个好