6.23 自我总结 面向对象的高阶 1.isinstance/type/issubclass 1.type 显示对象的类,但是不会显示他的父类 2.isinstance 会显示的对象的类,也会去找对象的父类,填写参数是对象,类isinstance(对象,类)如果对象属于后面的类会报Ture,反之False 3.issubclass 与isinstance 相似不过他填写的参数是类与类 4.总结 来说:type(对象)不会认为子类是一种父类类型:isinstance(对象,类)会认为子类是一种父类…
反射 : 是用字符串类型的名字 去操作 变量 相比于用eval('print(name)') 留有 安全隐患 反射 就没有安全问题 hasattr 语法: hasattr(object, name)object可以是对象,类,模块,当前Py文件.name是一个给字符串数据类型,可以是变量(属性),函数(方法).如果name在object中存在,则返回Ture,否则返回False. getattr与hasattr语法相同,返回的结果是对应name的值或函数. 反射对象的方法 a.func() re…
hasattr(obj,name_str):#判断一个对象obj里面是否有对应的name_str字符串的方法,返回True或者Falsegetattr(obj,name_str):#根据字符串去获取对象里的对应方法的内存地址. class Dog(object): def __init__(self,name): self.name = name def eat(self,food): print('%s eating...:%s' %(self.name,food)) def talk(sel…
当用户输入字符串时,不能够用来运行程序 1.使用 hasattr 找出输入的字符串是否在程序内 2.使用 getattr 返回找出字符串对应的函数的内存地址或者变量 3. 使用setattr 添加新的函数,或者改变已有的程序的实例变量或类变量 import easygui def bulk(self): print('%s is talking'%self.name) class Dog(object): def __init__(self,name): self.name = name def…
class BlackMedium:     feature='Ugly'     def __init__(self,name,addr):         self.name=name         self.addr=addr       def sell_house(self):         print('%s 黑中介卖房子啦,傻逼才买呢,但是谁能证明自己不傻逼' %self.name)     def rent_house(self):         print('%s 黑中介…
通过对象.属性的方式触发的是__getattr__,__delattr__,__setattr__ 通过对象['属性']触发__getitem__,__setitem__,__delitem__ class Foo: def __getitem__(self, item): print('getitem', item) return self.__dict__[item] def __setitem__(self, key, value): print('setitem') self.__dic…
反射(hasattr,getattr,setattr,delattr) 反射在类中的使用 反射就是通过字符串来操作类或者对象的属性 反射本质就是在使用内置函数,其中反射有四个内置函数: hasattr:判断一个方法是否存在于这个类中 getattr:根据字符串去过去obj对象里的对应的方法的内存地址,加'()'括号即可执行 setattr:通过setattr将外部的一个函数绑定到实例中 delattr:删除一个实例或者类中的方法 class People: country = 'China' d…
目录 hasattr getattr setattr delattr 反射的应用 __import__(了解) 思考: 在做程序开发中,我们常常会遇到这样的需求:需要执行对象里的某个方法,或需要调用对象中的某个变量,但是由于种种原因我们无法确定这个方法或变量是否存在,这是我们需要用一个特殊的方法或机制要访问和操作这个未知的方法或变量,这中机制就称之为反射 反射:用字符串的方式去访问对象的属性,调用对象的方法,python中一切皆对象,都可以使用反射. hasattr(obj, name):检查…
一.异常处理 python异常: python的运行时错误称作异常 (1)语法错误:软件的结构上有错误而导致不能被解释器解释或不能被编译器编译 (2)逻辑错误:由于不完整或不合法的输入所致,也可能是逻辑无法生成.计算或者输出结果需要的过程无法执行等 python异常是一个对象,表示错误或意外情况 (1)在python检测到一个错误时,将触发一个异常 python可以通常异常传导机制传递一个异常对象,发出一个异常情况出现的信号 程序员也可以在代码中手动触发异常 (2)python异常也可以理解为:…
#!/usr/bin/env python # -*- coding:utf-8 -*- # 作者:Presley # 邮箱:1209989516@qq.com # 时间:2018-11-04 # 反射使用 import sys class WebServer(object): def __init__(self,host,port): self.host = host self.port = port def start(self): print("Server is starting...&…