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

网站开发js不更新百度站长平台诊断

网站开发js不更新,百度站长平台诊断,广州免费建站哪里有,注册深圳公司什么是反射#xff1f; 反射的概念是由Smith在1982年首次提出的#xff0c;主要是指程序可以访问、检测和修改它本身状态或行为的一种能力#xff08;自省#xff09;#xff0c; 这一概念的提出很快引发了计算机科学领域关于应用反射的研究。它首次被程序语言的设计领域所…什么是反射 反射的概念是由Smith在1982年首次提出的主要是指程序可以访问、检测和修改它本身状态或行为的一种能力自省 这一概念的提出很快引发了计算机科学领域关于应用反射的研究。它首次被程序语言的设计领域所采用。并在Lisp和面向 对象方面取得了成绩。   一、python3中四个可以实现自省的函数下列方法适用于类和对象 class BlackMedium:fetureUglydef __init__(self,name,addr):self.namenameself.addraddrdef sell_hourse(self):print([%s]正在卖房子傻逼才买呢%self.name)def rent_hourse(self):print([%s]正在租房子傻逼才买呢%self.name)b1BlackMedium(黑中介,殡仪馆)   1、hasattr(object,name) 判断object中有没有一个name字符串对应的方法或属性 class BlackMedium:fetureUglydef __init__(self,name,addr):self.namenameself.addraddrdef sell_hourse(self):print([%s]正在卖房子傻逼才买呢%self.name)def rent_hourse(self):print([%s]正在租房子傻逼才买呢%self.name)b1BlackMedium(黑中介,殡仪馆) print(b1.__dict__)#{name: 黑中介, addr: 殡仪馆} # b1.name-------b1.__dict__[name] print(b1.name)#黑中介 print(b1.addr)#殡仪馆 #用hasattr检测类的属性和方法存在返回TRUE不存在返回FALSE print(hasattr(b1,name))#True print(hasattr(b1,addr))#True print(hasattr(b1,namnmae))#False hasattrobject,name   2、getattr(object,name,defaultNone) 检测正确时有属性就返回属性值有方法就返回方法的内存地址加就可以运行 检测有错误时不给default赋值会报错报错时写什么会提示什么 #检测属性属性存在就会打印值属性不存在会打印报错或default print(getattr(b1,name))#黑中介 print(getattr(b1,aaaaaa))#有报错提示 print(getattr(b1,aaaaaa,没有此属性))#有报错提示没有此属性#检测方法,有则返回内存地址加就可以运行没有则报错或提示default信息 print(getattr(b1,sell_hourse,无此方法))#返回sell_hourse方法的内存地址-------》b1.sell_hourse #bound method BlackMedium.sell_hourse of __main__.BlackMedium object at 0x0000020EE5447198 #有内存地址加就可以运行 funcgetattr(b1,sell_hourse) func()#[黑中介]正在卖房子傻逼才买呢print(getattr(b1,jskdkflsd,无此方法))#无此方法 getattr(object,name,default)   3、setattr(x,y,z) 可以增加修改属性也可以增加方法, x传入对象y传入字符串相当于字典中的keyx传入值相当于字典中的value print(b1.__dict__)#{name: 黑中介, addr: 殡仪馆} setattr(b1,name,SB)#修改属性 setattr(b1,sb,True)#增加属性 print(b1.__dict__)#{name: SB, addr: 殡仪馆, sb: True} setattr(b1,func,lambda self:self.nameSB)#增加函数属性 # print(b1.func(b1))#黑中介SB setattr(x,y,z)   4、delattr(x,y) 删除属性x,y同上 print(b1.__dict__)#{name: 黑中介, addr: 殡仪馆} delattr(b1,name)#删除属性------》del b1.name # del b1.name print(b1.__dict__)#{addr: 殡仪馆} setattr(x,y)   5、动态模块导入 1、把模块名或文件名以字符串形式传给__import__如果模块在二级文件内__import__方法只能拿到最顶级模块 module_t__import__(三级菜单)#执行module_t就会执行模块内的代码 print(module_t)2、 import imaplib mimaplib.import_module(文件.三级菜单)#直接定位到三级菜单 print(m) 3、导入有*号时如果模块里面的属性有 _名字 的属性或方法时 带 下划线的属性或方法则不能被导入 from 模块名 import *  补充 一切皆对象文件也是对象同样可以使用自省的方法 1、情景当你写的代码有上万行时此时已是大佬 ^_^想不起来某个功能是否完成既可以使用下面的方法来判断 x111 y222 #用sys可以导入模块自己用hasattr可以检测功能是否完成 import sys objsys.modules[__name__] print(hasattr(obj,x))#True print(hasattr(obj,xsdf))#False 导入模块自己   2、情景做程序开发每个人写不同的功能当需要用到别人的功能时不知道是否完成因此我们可以导入同事写的代码文件用hasattr判断你需要的功能是否完成 import test as obj print(obj)print(hasattr(obj,say_hi))if hasattr(obj,say_hi):funcgetattr(obj,say_hi)func()else:print(其他的逻辑) 导入别人的模块   二、下划线开头的三种attr方法 这三种方法是给实例用的和类没关系 1、__getattr__(self,item) 只有使用点调用属性且属性不存在时才会触发__getattr__ class Foo:def __init__(self,name,age):self.namenameself.ageagedef __getattr__(self, item):print(执行__getattr__,item是 %s%item)#调用不存在属性时触发__getattr__f1Foo(飞乐,18) print(f1.__dict__)#{name: 飞乐, age: 18} f1.name#不会触发__getattr__ f1.jsdlkf#执行__getattr__,item是 jsdlkf __getattr__(self,item)   2、__delattr__self,item 删除属性时会触发 class Foo:def __init__(self,name,age):self.namenameself.ageagedef __delattr__(self, item):#只要有删除操作就会触发__delattr__并不一定能删除# 下面的内容会讲到触发__delattr__并且删除值print(执行__delattr__,item是 %s%item) f1Foo(飞乐,18) print(f1.__dict__)#{name: 飞乐, age: 18} del f1.age#执行__delattr__,item是 age print(f1.__dict__)#{name: 飞乐, age: 18} __delattr__(self,item)   3、__setattr__(self,key,value) 增加或修改属性会触发__setattr__的执行在实例化对象时__init__函数属于增加属性操作也会触发__setattr__的执行  class Foo:def __init__(self,name,age):#会触发__setattr__self.namenameself.ageagedef __setattr__(self, key, value):#添加或修改属性会触发它的执行print(执行__setattr__,key: %s value: %s%(key,value))# self.kyevalue #一直触发__setattr__无期递归你好好想想self.__dict__[key]value#应该使用它f1Foo(飞乐,18) #执行__setattr__,key: name value: 飞乐 #执行__setattr__,key: age value: 18 print(f1.__dict__)#{name: 飞乐, age: 18} f1.sexmale#增加属性执行__setattr__,key: sex value: maleprint(f1.name)#飞乐 f1.nameking#修改属性执行__setattr__,key: name value: king print(f1.__dict__)#{name: king, age: 18, sex: male} print(f1.name)#king __setattr__(self,key,value)   4、利用attr方法定制属于自己的方法 根据下方代码可以自己扩展好好想想 class Foo:def __init__(self,name,age):self.namenameself.ageagedef __getattr__(self, item):print(%s 属性不存在%item)def __setattr__(self, key, value):print(正在设置--------》)if type(value) is str:# self.keyvalue 会触发__setattr__递归self.__dict__[key]valueelse:print(属性添加必须是字符串)def __delattr__(self, item):print(不允许删除属性 【%s】%item)#del self.__dict__[item]#self.__dict__.pop(item) # f1Foo(飞乐,18)#属性添加必须是字符串 f1Foo(飞乐,18)#增加或修改属性会触发__setattr__ #正在设置--------》 #正在设置--------》 f1.name#不会触发__getattr__ f1.king#触发__getattr__ king 属性不存在 print(f1.__dict__)#{name: 飞乐, age: 18} f1.nameking#触发了__setattr__ print(f1.__dict__)# {name: king, age: 18} del f1.name#不允许删除属性 【name】 定制   三、包装 包装标准类型通过继承和派生进行包装定制属于自己的数据类型 1、通过继承派生包装 class List(list):def append(self, object):if type(object) is str:super().append(object)#继承父类的append方法else:print(类型必须是字符串)def show_mid(self):mid_indexint(len(self)/2)return self[mid_index]l1List(helloword) print(l1,type(l1))#[h, e, l, l, o, w, o, r, d] class __main__.List l1.append(king) print(l1)#[h, e, l, l, o, w, o, r, d, king] l1.append(3245)#类型必须是字符串类型 print(l1.show_mid())#w 定制属于自己的list方法   2、通过__getattr__授权包装 授权也是一种包装用__getattr__方法不用继承和派生的方法来实现 import time class Open:def __init__(self,filename,moder,encodingutf-8):#用类有两种方法一种是继承另一种是组合self.fileopen(filename,mode,encodingencoding)#组合self.modemodeself.encodingencodingdef write(self,line):ttime.strftime(%Y-%m-%d %X)self.file.write(%s %s%(t,line))def __getattr__(self, item):return getattr(self.file,item)#返回item方法的内存地址 #f1的属性找不到时会触发__getattr__的执行 f1Open(a.txt,w) print(f1.write)#返回的内存地址加()就可以执行 #built-in method write of _io.TextIOWrapper object at 0x000002138D1E8B40 f1.write(helloword)#把内容写入到文件中 f1.seek(0) print(f1.read())#helloword#f1的write能找到时 f1.write(CPU过载过高\n) f1.write(内存不足\n) f1.write(系统被不明病毒攻击\n) f1.seek(0) print(f1.read())#读出了定制写入的内容 # 2018-09-10 22:34:34 helloword2018-09-10 22:34:34 CPU过载过高 # 2018-09-10 22:34:34 内存不足 # 2018-09-10 22:34:34 系统被不明病毒攻击 授权  转载于:https://www.cnblogs.com/happyfei/p/9618996.html
http://www.zqtcl.cn/news/923141/

相关文章:

  • 电子商务网站建设与管理程序设计题6哪家微网站做的好
  • 网站建设图文片平面网页设计是什么
  • 域外网站宁波建设监理协会
  • 胶州网站建设公司哪家好wordpress怎么改标题
  • php网站开发综合案例免费注册推广网站
  • 邯郸做网站的地方广州网站制作
  • 企业网站制作公司24小时接单郑州手机网站推广外包
  • 接做施工图的网站手机移动网站模板
  • 做网站月薪资多少钱如何打开微信小程序
  • 免费建站网站一级大录像不卡在线看网页无锡网站排名提升
  • 无锡门户网站制作服务郑州艾特网站建设
  • 建设网站 万网网页设计表单代码模板
  • 网站速度查询app开发模板网站
  • 国外案例网站做电商网站有什么用
  • 自己做的网站点击赚钱免费制作二级网站
  • 产品包装设计网站网站开发所需费用
  • 新手学做百度联盟网站html水平导航栏怎么做
  • 单页网站排名seo营销软件
  • 网站建设项目报告书广州品牌网站设计价格
  • 阜阳市建设工程网站wordpress三栏博客主题
  • 邢台学校网站建设制作游戏需要多少钱
  • 品牌做网站网上接外包项目
  • 购物网站设计图百安居装修报价清单
  • 做网站要提供什么莱芜综合频道莱芜新闻
  • 网站怎么做前后台存取马鞍山市网站建设公司
  • 北京西站到北京南站软件定制外包公司
  • 网站开发手机端游戏网站设计风格有哪些
  • 网站建设开发感想网站建设公司接单
  • 建立网站后怎样收费吗设计图纸网站
  • asp网站密码从零开始做一个网站需要多少钱