反射
导引
class Teacher: dic={'查看学生信息':'','查看老师信息':''} def show_student(self): print('show student') def show_teacher(self): print('show teacher') menue=Teacher.dic for i in menue: print(i)
通过上面的代码可以查看字典里面的信息
那么通过getattr即可以实现
class Teacher: dic={'查看学生信息':'','查看老师信息':''} def show_student(self): print('show student') def show_teacher(self): print('show teacher') ret=getattr(Teacher,'dic')#注意这里的格式是:类名,‘方法名’ print(ret) D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/3.二分查找算法.py {'查看学生信息': '', '查看老师信息': ''} Process finished with exit code 0
hasattr
class Teacher: dic={'查看学生信息':'','查看老师信息':''} def show_student(self): print('show student') def show_teacher(self): print('show teacher') #有时候可能代码中不存在dic这个对象,那么在调用之前就需要判断一下,但是hasattr和getattr括号中的内容必须保持一致 if hasattr(Teacher,'dic'): ret=getattr(Teacher,'dic') print(ret)
进阶
class Teacher: dic={'查看学生信息':'show student','查看老师信息':'show teacher'} def show_student(self): print('show student') def show_teacher(self): print('show teacher') for k in Teacher.dic: print(k) key=input('请输入需求:') print(Teacher.dic[key]) if hasattr(Teacher,Teacher.dic[key]): func=getattr(Teacher,Teacher.dic[key]) func() D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/3.二分查找算法.py 查看学生信息 查看老师信息 请输入需求:查看学生信息 show student Process finished with exit code 0
从上面的代码可以看出,这里不用判断输入的内容是什么,就可以直接调用相关内容.
加入这里不适用反射,那么
class Teacher: dic={'查看学生信息':'show student','查看老师信息':'show teacher'} def show_student(self): print('show student') def show_teacher(self): print('show teacher') for k in Teacher.dic: print(k) key=input('请输入需求:') if key=='查看学生信息': print(dic[key])#需要增加这一步,比较麻烦。在这个例子中可能性比较少;还能实现;但是如果未来可能性比较多的时候,代码就会比较复杂
上面的例子就是反射对象的属性
反射的定义
是用字符串形式的名字去操作变量。
反射对象中的属性和方法
:hasattr getattr setattr delattr
反射的用处:
对象名,获取对象的属性和普通方法
类名 获取静态属性和类方法和静态方法
反射对象的方法
class A: def func(self): print('in func') a=A() a.name='alex' ret=getattr(a,'func') print(ret)#得到一个绑定方法 ret()#调用了func函数
反射类的属性和方法
class A: price=20 @classmethod def func(cls): print('in func') a=A() #反射类的属性 print(getattr(a,'price')) print(getattr(A,'price')) #反射类的方法 print(getattr(a,'func'))
反射模块
首先自定义一个名为‘my’的python文件
day='monday' def func(): return 'wahaha'
反射模块中的代码
import my #反射模块的属性 print(my.day) print(getattr(my,'day')) #反射模块的方法 print(getattr(my,'func'))
反射内置模块的方法
import sys year=2018 print(sys.modules)#找到所有模块 print(sys.modules['__main__'])#找到当前页面模块 #根据反射的公式:当前模块,‘对象或者方法名’,那么当前模块名如何确定? #通过sys 方法找到了,就是:sys.modules['__main__'],所以 #反射自己模块中的变量 print(getattr(sys.modules['__main__'],'year')) print(getattr(sys.modules[__name__],'year'))#如果是当前页面就是执行当前页面,如果是调用页面就执行调用页面 #反射自己模块中的方法 def qq(): print('qq') print(getattr(sys.modules['__main__'],'qq')) D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/3.二分查找算法.py {'sys': <module 'sys' (built-in)>, 'builtins': <module 'builtins' (built-in)>, '_frozen_importlib': <module 'importlib._bootstrap' (frozen)>, '_imp': <module '_imp' (built-in)>, '_thread': <module '_thread' (built-in)>, '_warnings': <module '_warnings' (built-in)>, '_weakref': <module '_weakref' (built-in)>, 'zipimport': <module 'zipimport' (built-in)>, '_frozen_importlib_external': <module 'importlib._bootstrap_external' (frozen)>, '_io': <module 'io' (built-in)>, 'marshal': <module 'marshal' (built-in)>, 'nt': <module 'nt' (built-in)>, 'winreg': <module 'winreg' (built-in)>, 'encodings': <module 'encodings' from 'D:\\anoconda\\lib\\encodings\\__init__.py'>, 'codecs': <module 'codecs' from 'D:\\anoconda\\lib\\codecs.py'>, '_codecs': <module '_codecs' (built-in)>, 'encodings.aliases': <module 'encodings.aliases' from 'D:\\anoconda\\lib\\encodings\\aliases.py'>, 'encodings.utf_8': <module 'encodings.utf_8' from 'D:\\anoconda\\lib\\encodings\\utf_8.py'>, '_signal': <module '_signal' (built-in)>, '__main__': <module '__main__' from 'F:/python/python学习/人工智能/第一阶段day2/3.二分查找算法.py'>, 'encodings.latin_1': <module 'encodings.latin_1' from 'D:\\anoconda\\lib\\encodings\\latin_1.py'>, 'io': <module 'io' from 'D:\\anoconda\\lib\\io.py'>, 'abc': <module 'abc' from 'D:\\anoconda\\lib\\abc.py'>, '_abc': <module '_abc' (built-in)>, 'site': <module 'site' from 'D:\\anoconda\\lib\\site.py'>, 'os': <module 'os' from 'D:\\anoconda\\lib\\os.py'>, 'stat': <module 'stat' from 'D:\\anoconda\\lib\\stat.py'>, '_stat': <module '_stat' (built-in)>, 'ntpath': <module 'ntpath' from 'D:\\anoconda\\lib\\ntpath.py'>, 'genericpath': <module 'genericpath' from 'D:\\anoconda\\lib\\genericpath.py'>, 'os.path': <module 'ntpath' from 'D:\\anoconda\\lib\\ntpath.py'>, '_collections_abc': <module '_collections_abc' from 'D:\\anoconda\\lib\\_collections_abc.py'>, '_sitebuiltins': <module '_sitebuiltins' from 'D:\\anoconda\\lib\\_sitebuiltins.py'>, '_bootlocale': <module '_bootlocale' from 'D:\\anoconda\\lib\\_bootlocale.py'>, '_locale': <module '_locale' (built-in)>, 'encodings.gbk': <module 'encodings.gbk' from 'D:\\anoconda\\lib\\encodings\\gbk.py'>, '_codecs_cn': <module '_codecs_cn' (built-in)>, '_multibytecodec': <module '_multibytecodec' (built-in)>, 'types': <module 'types' from 'D:\\anoconda\\lib\\types.py'>, 'importlib': <module 'importlib' from 'D:\\anoconda\\lib\\importlib\\__init__.py'>, 'importlib._bootstrap': <module 'importlib._bootstrap' (frozen)>, 'importlib._bootstrap_external': <module 'importlib._bootstrap_external' (frozen)>, 'warnings': <module 'warnings' from 'D:\\anoconda\\lib\\warnings.py'>, 'importlib.util': <module 'importlib.util' from 'D:\\anoconda\\lib\\importlib\\util.py'>, 'importlib.abc': <module 'importlib.abc' from 'D:\\anoconda\\lib\\importlib\\abc.py'>, 'importlib.machinery': <module 'importlib.machinery' from 'D:\\anoconda\\lib\\importlib\\machinery.py'>, 'contextlib': <module 'contextlib' from 'D:\\anoconda\\lib\\contextlib.py'>, 'collections': <module 'collections' from 'D:\\anoconda\\lib\\collections\\__init__.py'>, 'operator': <module 'operator' from 'D:\\anoconda\\lib\\operator.py'>, '_operator': <module '_operator' (built-in)>, 'keyword': <module 'keyword' from 'D:\\anoconda\\lib\\keyword.py'>, 'heapq': <module 'heapq' from 'D:\\anoconda\\lib\\heapq.py'>, '_heapq': <module '_heapq' (built-in)>, 'itertools': <module 'itertools' (built-in)>, 'reprlib': <module 'reprlib' from 'D:\\anoconda\\lib\\reprlib.py'>, '_collections': <module '_collections' (built-in)>, 'functools': <module 'functools' from 'D:\\anoconda\\lib\\functools.py'>, '_functools': <module '_functools' (built-in)>, 'backports': <module 'backports' from 'D:\\anoconda\\lib\\site-packages\\backports\\__init__.py'>, 'mpl_toolkits': <module 'mpl_toolkits' (namespace)>, 'sphinxcontrib': <module 'sphinxcontrib' from 'D:\\anoconda\\lib\\site-packages\\sphinxcontrib\\__init__.py'>, 'zope': <module 'zope' from 'D:\\anoconda\\lib\\site-packages\\zope\\__init__.py'>, 'sitecustomize': <module 'sitecustomize' from 'D:\\系统工具\\pycharm\\PyCharm 2018.3.2\\helpers\\pycharm_matplotlib_backend\\sitecustomize.py'>, 'matplotlib': <module 'matplotlib' from 'D:\\anoconda\\lib\\site-packages\\matplotlib\\__init__.py'>, '__future__': <module '__future__' from 'D:\\anoconda\\lib\\__future__.py'>, 'six': <module 'six' from 'D:\\anoconda\\lib\\site-packages\\six.py'>, 'struct': <module 'struct' from 'D:\\anoconda\\lib\\struct.py'>, '_struct': <module '_struct' (built-in)>, 'atexit': <module 'atexit' (built-in)>, 'distutils': <module 'distutils' from 'D:\\anoconda\\lib\\distutils\\__init__.py'>, 'distutils.version': <module 'distutils.version' from 'D:\\anoconda\\lib\\distutils\\version.py'>, 're': <module 're' from 'D:\\anoconda\\lib\\re.py'>, 'enum': <module 'enum' from 'D:\\anoconda\\lib\\enum.py'>, 'sre_compile': <module 'sre_compile' from 'D:\\anoconda\\lib\\sre_compile.py'>, '_sre': <module '_sre' (built-in)>, 'sre_parse': <module 'sre_parse' from 'D:\\anoconda\\lib\\sre_parse.py'>, 'sre_constants': <module 'sre_constants' from 'D:\\anoconda\\lib\\sre_constants.py'>, 'copyreg': <module 'copyreg' from 'D:\\anoconda\\lib\\copyreg.py'>, 'inspect': <module 'inspect' from 'D:\\anoconda\\lib\\inspect.py'>, 'dis': <module 'dis' from 'D:\\anoconda\\lib\\dis.py'>, 'opcode': <module 'opcode' from 'D:\\anoconda\\lib\\opcode.py'>, '_opcode': <module '_opcode' (built-in)>, 'collections.abc': <module 'collections.abc' from 'D:\\anoconda\\lib\\collections\\abc.py'>, 'linecache': <module 'linecache' from 'D:\\anoconda\\lib\\linecache.py'>, 'tokenize': <module 'tokenize' from 'D:\\anoconda\\lib\\tokenize.py'>, 'token': <module 'token' from 'D:\\anoconda\\lib\\token.py'>, 'locale': <module 'locale' from 'D:\\anoconda\\lib\\locale.py'>, 'logging': <module 'logging' from 'D:\\anoconda\\lib\\logging\\__init__.py'>, 'time': <module 'time' (built-in)>, 'traceback': <module 'traceback' from 'D:\\anoconda\\lib\\traceback.py'>, 'weakref': <module 'weakref' from 'D:\\anoconda\\lib\\weakref.py'>, '_weakrefset': <module '_weakrefset' from 'D:\\anoconda\\lib\\_weakrefset.py'>, 'string': <module 'string' from 'D:\\anoconda\\lib\\string.py'>, '_string': <module '_string' (built-in)>, 'threading': <module 'threading' from 'D:\\anoconda\\lib\\threading.py'>, 'shutil': <module 'shutil' from 'D:\\anoconda\\lib\\shutil.py'>, 'fnmatch': <module 'fnmatch' from 'D:\\anoconda\\lib\\fnmatch.py'>, 'posixpath': <module 'posixpath' from 'D:\\anoconda\\lib\\posixpath.py'>, 'errno': <module 'errno' (built-in)>, 'zlib': <module 'zlib' (built-in)>, 'bz2': <module 'bz2' from 'D:\\anoconda\\lib\\bz2.py'>, '_compression': <module '_compression' from 'D:\\anoconda\\lib\\_compression.py'>, '_bz2': <module '_bz2' from 'D:\\anoconda\\DLLs\\_bz2.pyd'>, 'lzma': <module 'lzma' from 'D:\\anoconda\\lib\\lzma.py'>, '_lzma': <module '_lzma' from 'D:\\anoconda\\DLLs\\_lzma.pyd'>, 'tempfile': <module 'tempfile' from 'D:\\anoconda\\lib\\tempfile.py'>, 'random': <module 'random' from 'D:\\anoconda\\lib\\random.py'>, 'math': <module 'math' (built-in)>, 'hashlib': <module 'hashlib' from 'D:\\anoconda\\lib\\hashlib.py'>, '_hashlib': <module '_hashlib' from 'D:\\anoconda\\DLLs\\_hashlib.pyd'>, '_blake2': <module '_blake2' (built-in)>, '_sha3': <module '_sha3' (built-in)>, 'bisect': <module 'bisect' from 'D:\\anoconda\\lib\\bisect.py'>, '_bisect': <module '_bisect' (built-in)>, '_random': <module '_random' (built-in)>, 'matplotlib.cbook': <module 'matplotlib.cbook' from 'D:\\anoconda\\lib\\site-packages\\matplotlib\\cbook\\__init__.py'>, 'six.moves': <module 'six.moves' (<six._SixMetaPathImporter object at 0x000001AB1718B470>)>, 'datetime': <module 'datetime' from 'D:\\anoconda\\lib\\datetime.py'>, '_datetime': <module '_datetime' (built-in)>, 'glob': <module 'glob' from 'D:\\anoconda\\lib\\glob.py'>, 'gzip': <module 'gzip' from 'D:\\anoconda\\lib\\gzip.py'>, 'numbers': <module 'numbers' from 'D:\\anoconda\\lib\\numbers.py'>, 'numpy': <module 'numpy' from 'D:\\anoconda\\lib\\site-packages\\numpy\\__init__.py'>, 'numpy._globals': <module 'numpy._globals' from 'D:\\anoconda\\lib\\site-packages\\numpy\\_globals.py'>, 'numpy.__config__': <module 'numpy.__config__' from 'D:\\anoconda\\lib\\site-packages\\numpy\\__config__.py'>, 'numpy.version': <module 'numpy.version' from 'D:\\anoconda\\lib\\site-packages\\numpy\\version.py'>, 'numpy._import_tools': <module 'numpy._import_tools' from 'D:\\anoconda\\lib\\site-packages\\numpy\\_import_tools.py'>, 'numpy.add_newdocs': <module 'numpy.add_newdocs' from 'D:\\anoconda\\lib\\site-packages\\numpy\\add_newdocs.py'>, 'numpy.lib': <module 'numpy.lib' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\__init__.py'>, 'numpy.lib.info': <module 'numpy.lib.info' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\info.py'>, 'numpy.lib.type_check': <module 'numpy.lib.type_check' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\type_check.py'>, 'numpy.core': <module 'numpy.core' from 'D:\\anoconda\\lib\\site-packages\\numpy\\core\\__init__.py'>, 'numpy.core.info': <module 'numpy.core.info' from 'D:\\anoconda\\lib\\site-packages\\numpy\\core\\info.py'>, 'numpy.core.multiarray': <module 'numpy.core.multiarray' from 'D:\\anoconda\\lib\\site-packages\\numpy\\core\\multiarray.cp37-win_amd64.pyd'>, 'numpy.core.umath': <module 'numpy.core.umath' from 'D:\\anoconda\\lib\\site-packages\\numpy\\core\\umath.cp37-win_amd64.pyd'>, 'numpy.core._internal': <module 'numpy.core._internal' from 'D:\\anoconda\\lib\\site-packages\\numpy\\core\\_internal.py'>, 'numpy.compat': <module 'numpy.compat' from 'D:\\anoconda\\lib\\site-packages\\numpy\\compat\\__init__.py'>, 'numpy.compat._inspect': <module 'numpy.compat._inspect' from 'D:\\anoconda\\lib\\site-packages\\numpy\\compat\\_inspect.py'>, 'numpy.compat.py3k': <module 'numpy.compat.py3k' from 'D:\\anoconda\\lib\\site-packages\\numpy\\compat\\py3k.py'>, 'pathlib': <module 'pathlib' from 'D:\\anoconda\\lib\\pathlib.py'>, 'urllib': <module 'urllib' from 'D:\\anoconda\\lib\\urllib\\__init__.py'>, 'urllib.parse': <module 'urllib.parse' from 'D:\\anoconda\\lib\\urllib\\parse.py'>, 'ctypes': <module 'ctypes' from 'D:\\anoconda\\lib\\ctypes\\__init__.py'>, '_ctypes': <module '_ctypes' from 'D:\\anoconda\\DLLs\\_ctypes.pyd'>, 'ctypes._endian': <module 'ctypes._endian' from 'D:\\anoconda\\lib\\ctypes\\_endian.py'>, 'numpy.core.numerictypes': <module 'numpy.core.numerictypes' from 'D:\\anoconda\\lib\\site-packages\\numpy\\core\\numerictypes.py'>, 'numpy.core.numeric': <module 'numpy.core.numeric' from 'D:\\anoconda\\lib\\site-packages\\numpy\\core\\numeric.py'>, 'pickle': <module 'pickle' from 'D:\\anoconda\\lib\\pickle.py'>, '_compat_pickle': <module '_compat_pickle' from 'D:\\anoconda\\lib\\_compat_pickle.py'>, '_pickle': <module '_pickle' (built-in)>, 'numpy.core.fromnumeric': <module 'numpy.core.fromnumeric' from 'D:\\anoconda\\lib\\site-packages\\numpy\\core\\fromnumeric.py'>, 'numpy.core._methods': <module 'numpy.core._methods' from 'D:\\anoconda\\lib\\site-packages\\numpy\\core\\_methods.py'>, 'numpy.core.arrayprint': <module 'numpy.core.arrayprint' from 'D:\\anoconda\\lib\\site-packages\\numpy\\core\\arrayprint.py'>, 'numpy.core.defchararray': <module 'numpy.core.defchararray' from 'D:\\anoconda\\lib\\site-packages\\numpy\\core\\defchararray.py'>, 'numpy.core.records': <module 'numpy.core.records' from 'D:\\anoconda\\lib\\site-packages\\numpy\\core\\records.py'>, 'numpy.core.memmap': <module 'numpy.core.memmap' from 'D:\\anoconda\\lib\\site-packages\\numpy\\core\\memmap.py'>, 'numpy.core.function_base': <module 'numpy.core.function_base' from 'D:\\anoconda\\lib\\site-packages\\numpy\\core\\function_base.py'>, 'numpy.core.machar': <module 'numpy.core.machar' from 'D:\\anoconda\\lib\\site-packages\\numpy\\core\\machar.py'>, 'numpy.core.getlimits': <module 'numpy.core.getlimits' from 'D:\\anoconda\\lib\\site-packages\\numpy\\core\\getlimits.py'>, 'numpy.core.shape_base': <module 'numpy.core.shape_base' from 'D:\\anoconda\\lib\\site-packages\\numpy\\core\\shape_base.py'>, 'numpy.core.einsumfunc': <module 'numpy.core.einsumfunc' from 'D:\\anoconda\\lib\\site-packages\\numpy\\core\\einsumfunc.py'>, 'numpy.testing': <module 'numpy.testing' from 'D:\\anoconda\\lib\\site-packages\\numpy\\testing\\__init__.py'>, 'unittest': <module 'unittest' from 'D:\\anoconda\\lib\\unittest\\__init__.py'>, 'unittest.result': <module 'unittest.result' from 'D:\\anoconda\\lib\\unittest\\result.py'>, 'unittest.util': <module 'unittest.util' from 'D:\\anoconda\\lib\\unittest\\util.py'>, 'unittest.case': <module 'unittest.case' from 'D:\\anoconda\\lib\\unittest\\case.py'>, 'difflib': <module 'difflib' from 'D:\\anoconda\\lib\\difflib.py'>, 'pprint': <module 'pprint' from 'D:\\anoconda\\lib\\pprint.py'>, 'unittest.suite': <module 'unittest.suite' from 'D:\\anoconda\\lib\\unittest\\suite.py'>, 'unittest.loader': <module 'unittest.loader' from 'D:\\anoconda\\lib\\unittest\\loader.py'>, 'unittest.main': <module 'unittest.main' from 'D:\\anoconda\\lib\\unittest\\main.py'>, 'argparse': <module 'argparse' from 'D:\\anoconda\\lib\\argparse.py'>, 'gettext': <module 'gettext' from 'D:\\anoconda\\lib\\gettext.py'>, 'unittest.runner': <module 'unittest.runner' from 'D:\\anoconda\\lib\\unittest\\runner.py'>, 'unittest.signals': <module 'unittest.signals' from 'D:\\anoconda\\lib\\unittest\\signals.py'>, 'signal': <module 'signal' from 'D:\\anoconda\\lib\\signal.py'>, 'numpy.testing._private': <module 'numpy.testing._private' from 'D:\\anoconda\\lib\\site-packages\\numpy\\testing\\_private\\__init__.py'>, 'numpy.testing._private.utils': <module 'numpy.testing._private.utils' from 'D:\\anoconda\\lib\\site-packages\\numpy\\testing\\_private\\utils.py'>, 'gc': <module 'gc' (built-in)>, 'numpy.lib.utils': <module 'numpy.lib.utils' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\utils.py'>, 'numpy.testing._private.decorators': <module 'numpy.testing._private.decorators' from 'D:\\anoconda\\lib\\site-packages\\numpy\\testing\\_private\\decorators.py'>, 'numpy.testing._private.nosetester': <module 'numpy.testing._private.nosetester' from 'D:\\anoconda\\lib\\site-packages\\numpy\\testing\\_private\\nosetester.py'>, 'numpy.testing._private.pytesttester': <module 'numpy.testing._private.pytesttester' from 'D:\\anoconda\\lib\\site-packages\\numpy\\testing\\_private\\pytesttester.py'>, 'numpy.lib.ufunclike': <module 'numpy.lib.ufunclike' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\ufunclike.py'>, 'numpy.lib.index_tricks': <module 'numpy.lib.index_tricks' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\index_tricks.py'>, 'numpy.lib.function_base': <module 'numpy.lib.function_base' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\function_base.py'>, 'numpy.lib.twodim_base': <module 'numpy.lib.twodim_base' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\twodim_base.py'>, 'numpy.lib.histograms': <module 'numpy.lib.histograms' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\histograms.py'>, 'numpy.matrixlib': <module 'numpy.matrixlib' from 'D:\\anoconda\\lib\\site-packages\\numpy\\matrixlib\\__init__.py'>, 'numpy.matrixlib.defmatrix': <module 'numpy.matrixlib.defmatrix' from 'D:\\anoconda\\lib\\site-packages\\numpy\\matrixlib\\defmatrix.py'>, 'ast': <module 'ast' from 'D:\\anoconda\\lib\\ast.py'>, '_ast': <module '_ast' (built-in)>, 'numpy.linalg': <module 'numpy.linalg' from 'D:\\anoconda\\lib\\site-packages\\numpy\\linalg\\__init__.py'>, 'numpy.linalg.info': <module 'numpy.linalg.info' from 'D:\\anoconda\\lib\\site-packages\\numpy\\linalg\\info.py'>, 'numpy.linalg.linalg': <module 'numpy.linalg.linalg' from 'D:\\anoconda\\lib\\site-packages\\numpy\\linalg\\linalg.py'>, 'numpy.linalg.lapack_lite': <module 'numpy.linalg.lapack_lite' from 'D:\\anoconda\\lib\\site-packages\\numpy\\linalg\\lapack_lite.cp37-win_amd64.pyd'>, 'numpy.linalg._umath_linalg': <module 'numpy.linalg._umath_linalg' from 'D:\\anoconda\\lib\\site-packages\\numpy\\linalg\\_umath_linalg.cp37-win_amd64.pyd'>, 'numpy.lib.stride_tricks': <module 'numpy.lib.stride_tricks' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\stride_tricks.py'>, 'numpy.lib.mixins': <module 'numpy.lib.mixins' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\mixins.py'>, 'numpy.lib.nanfunctions': <module 'numpy.lib.nanfunctions' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\nanfunctions.py'>, 'numpy.lib.shape_base': <module 'numpy.lib.shape_base' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\shape_base.py'>, 'numpy.lib.scimath': <module 'numpy.lib.scimath' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\scimath.py'>, 'numpy.lib.polynomial': <module 'numpy.lib.polynomial' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\polynomial.py'>, 'numpy.lib.arraysetops': <module 'numpy.lib.arraysetops' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\arraysetops.py'>, 'numpy.lib.npyio': <module 'numpy.lib.npyio' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\npyio.py'>, 'numpy.lib.format': <module 'numpy.lib.format' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\format.py'>, 'numpy.lib._datasource': <module 'numpy.lib._datasource' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\_datasource.py'>, 'numpy.lib._iotools': <module 'numpy.lib._iotools' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\_iotools.py'>, 'numpy.lib.financial': <module 'numpy.lib.financial' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\financial.py'>, 'decimal': <module 'decimal' from 'D:\\anoconda\\lib\\decimal.py'>, '_decimal': <module '_decimal' from 'D:\\anoconda\\DLLs\\_decimal.pyd'>, 'numpy.lib.arrayterator': <module 'numpy.lib.arrayterator' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\arrayterator.py'>, 'numpy.lib.arraypad': <module 'numpy.lib.arraypad' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\arraypad.py'>, 'numpy.lib._version': <module 'numpy.lib._version' from 'D:\\anoconda\\lib\\site-packages\\numpy\\lib\\_version.py'>, 'numpy.core._multiarray_tests': <module 'numpy.core._multiarray_tests' from 'D:\\anoconda\\lib\\site-packages\\numpy\\core\\_multiarray_tests.cp37-win_amd64.pyd'>, 'numpy._distributor_init': <module 'numpy._distributor_init' from 'D:\\anoconda\\lib\\site-packages\\numpy\\_distributor_init.py'>, 'numpy._mklinit': <module 'numpy._mklinit' from 'D:\\anoconda\\lib\\site-packages\\numpy\\_mklinit.cp37-win_amd64.pyd'>, 'numpy.fft': <module 'numpy.fft' from 'D:\\anoconda\\lib\\site-packages\\numpy\\fft\\__init__.py'>, 'numpy.fft.info': <module 'numpy.fft.info' from 'D:\\anoconda\\lib\\site-packages\\numpy\\fft\\info.py'>, 'numpy.fft.fftpack': <module 'numpy.fft.fftpack' from 'D:\\anoconda\\lib\\site-packages\\numpy\\fft\\fftpack.py'>, 'numpy.fft.fftpack_lite': <module 'numpy.fft.fftpack_lite' from 'D:\\anoconda\\lib\\site-packages\\numpy\\fft\\fftpack_lite.cp37-win_amd64.pyd'>, 'numpy.fft.helper': <module 'numpy.fft.helper' from 'D:\\anoconda\\lib\\site-packages\\numpy\\fft\\helper.py'>, 'mkl_fft': <module 'mkl_fft' from 'D:\\anoconda\\lib\\site-packages\\mkl_fft\\__init__.py'>, '_cython_0_28_4': <module '_cython_0_28_4'>, 'cython_runtime': <module 'cython_runtime'>, 'mkl_fft._pydfti': <module 'mkl_fft._pydfti' from 'D:\\anoconda\\lib\\site-packages\\mkl_fft\\_pydfti.cp37-win_amd64.pyd'>, 'mkl_fft._numpy_fft': <module 'mkl_fft._numpy_fft' from 'D:\\anoconda\\lib\\site-packages\\mkl_fft\\_numpy_fft.py'>, 'numpy.polynomial': <module 'numpy.polynomial' from 'D:\\anoconda\\lib\\site-packages\\numpy\\polynomial\\__init__.py'>, 'numpy.polynomial.polynomial': <module 'numpy.polynomial.polynomial' from 'D:\\anoconda\\lib\\site-packages\\numpy\\polynomial\\polynomial.py'>, 'numpy.polynomial.polyutils': <module 'numpy.polynomial.polyutils' from 'D:\\anoconda\\lib\\site-packages\\numpy\\polynomial\\polyutils.py'>, 'numpy.polynomial._polybase': <module 'numpy.polynomial._polybase' from 'D:\\anoconda\\lib\\site-packages\\numpy\\polynomial\\_polybase.py'>, 'numpy.polynomial.chebyshev': <module 'numpy.polynomial.chebyshev' from 'D:\\anoconda\\lib\\site-packages\\numpy\\polynomial\\chebyshev.py'>, 'numpy.polynomial.legendre': <module 'numpy.polynomial.legendre' from 'D:\\anoconda\\lib\\site-packages\\numpy\\polynomial\\legendre.py'>, 'numpy.polynomial.hermite': <module 'numpy.polynomial.hermite' from 'D:\\anoconda\\lib\\site-packages\\numpy\\polynomial\\hermite.py'>, 'numpy.polynomial.hermite_e': <module 'numpy.polynomial.hermite_e' from 'D:\\anoconda\\lib\\site-packages\\numpy\\polynomial\\hermite_e.py'>, 'numpy.polynomial.laguerre': <module 'numpy.polynomial.laguerre' from 'D:\\anoconda\\lib\\site-packages\\numpy\\polynomial\\laguerre.py'>, 'numpy.random': <module 'numpy.random' from 'D:\\anoconda\\lib\\site-packages\\numpy\\random\\__init__.py'>, 'numpy.random.info': <module 'numpy.random.info' from 'D:\\anoconda\\lib\\site-packages\\numpy\\random\\info.py'>, 'mtrand': <module 'numpy.random.mtrand' from 'D:\\anoconda\\lib\\site-packages\\numpy\\random\\mtrand.cp37-win_amd64.pyd'>, 'numpy.random.mtrand': <module 'numpy.random.mtrand' from 'D:\\anoconda\\lib\\site-packages\\numpy\\random\\mtrand.cp37-win_amd64.pyd'>, 'numpy.ctypeslib': <module 'numpy.ctypeslib' from 'D:\\anoconda\\lib\\site-packages\\numpy\\ctypeslib.py'>, 'numpy.ma': <module 'numpy.ma' from 'D:\\anoconda\\lib\\site-packages\\numpy\\ma\\__init__.py'>, 'numpy.ma.core': <module 'numpy.ma.core' from 'D:\\anoconda\\lib\\site-packages\\numpy\\ma\\core.py'>, 'textwrap': <module 'textwrap' from 'D:\\anoconda\\lib\\textwrap.py'>, 'numpy.ma.extras': <module 'numpy.ma.extras' from 'D:\\anoconda\\lib\\site-packages\\numpy\\ma\\extras.py'>, 'matplotlib.cbook.deprecation': <module 'matplotlib.cbook.deprecation' from 'D:\\anoconda\\lib\\site-packages\\matplotlib\\cbook\\deprecation.py'>, 'matplotlib.cbook._backports': <module 'matplotlib.cbook._backports' from 'D:\\anoconda\\lib\\site-packages\\matplotlib\\cbook\\_backports.py'>, 'matplotlib.compat': <module 'matplotlib.compat' from 'D:\\anoconda\\lib\\site-packages\\matplotlib\\compat\\__init__.py'>, 'matplotlib.compat.subprocess': <module 'matplotlib.compat.subprocess' from 'D:\\anoconda\\lib\\site-packages\\matplotlib\\compat\\subprocess.py'>, 'subprocess': <module 'subprocess' from 'D:\\anoconda\\lib\\subprocess.py'>, 'msvcrt': <module 'msvcrt' (built-in)>, '_winapi': <module '_winapi' (built-in)>, 'matplotlib.rcsetup': <module 'matplotlib.rcsetup' from 'D:\\anoconda\\lib\\site-packages\\matplotlib\\rcsetup.py'>, 'matplotlib.testing': <module 'matplotlib.testing' from 'D:\\anoconda\\lib\\site-packages\\matplotlib\\testing\\__init__.py'>, 'matplotlib.fontconfig_pattern': <module 'matplotlib.fontconfig_pattern' from 'D:\\anoconda\\lib\\site-packages\\matplotlib\\fontconfig_pattern.py'>, 'pyparsing': <module 'pyparsing' from 'D:\\anoconda\\lib\\site-packages\\pyparsing.py'>, 'copy': <module 'copy' from 'D:\\anoconda\\lib\\copy.py'>, 'matplotlib.colors': <module 'matplotlib.colors' from 'D:\\anoconda\\lib\\site-packages\\matplotlib\\colors.py'>, 'matplotlib._color_data': <module 'matplotlib._color_data' from 'D:\\anoconda\\lib\\site-packages\\matplotlib\\_color_data.py'>, 'cycler': <module 'cycler' from 'D:\\anoconda\\lib\\site-packages\\cycler.py'>, 'six.moves.urllib': <module 'six.moves.urllib' (<six._SixMetaPathImporter object at 0x000001AB1718B470>)>, 'six.moves.urllib.request': <module 'six.moves.urllib.request' (<six._SixMetaPathImporter object at 0x000001AB1718B470>)>, 'urllib.request': <module 'urllib.request' from 'D:\\anoconda\\lib\\urllib\\request.py'>, 'base64': <module 'base64' from 'D:\\anoconda\\lib\\base64.py'>, 'binascii': <module 'binascii' (built-in)>, 'email': <module 'email' from 'D:\\anoconda\\lib\\email\\__init__.py'>, 'http': <module 'http' from 'D:\\anoconda\\lib\\http\\__init__.py'>, 'http.client': <module 'http.client' from 'D:\\anoconda\\lib\\http\\client.py'>, 'email.parser': <module 'email.parser' from 'D:\\anoconda\\lib\\email\\parser.py'>, 'email.feedparser': <module 'email.feedparser' from 'D:\\anoconda\\lib\\email\\feedparser.py'>, 'email.errors': <module 'email.errors' from 'D:\\anoconda\\lib\\email\\errors.py'>, 'email._policybase': <module 'email._policybase' from 'D:\\anoconda\\lib\\email\\_policybase.py'>, 'email.header': <module 'email.header' from 'D:\\anoconda\\lib\\email\\header.py'>, 'email.quoprimime': <module 'email.quoprimime' from 'D:\\anoconda\\lib\\email\\quoprimime.py'>, 'email.base64mime': <module 'email.base64mime' from 'D:\\anoconda\\lib\\email\\base64mime.py'>, 'email.charset': <module 'email.charset' from 'D:\\anoconda\\lib\\email\\charset.py'>, 'email.encoders': <module 'email.encoders' from 'D:\\anoconda\\lib\\email\\encoders.py'>, 'quopri': <module 'quopri' from 'D:\\anoconda\\lib\\quopri.py'>, 'email.utils': <module 'email.utils' from 'D:\\anoconda\\lib\\email\\utils.py'>, 'socket': <module 'socket' from 'D:\\anoconda\\lib\\socket.py'>, '_socket': <module '_socket' from 'D:\\anoconda\\DLLs\\_socket.pyd'>, 'selectors': <module 'selectors' from 'D:\\anoconda\\lib\\selectors.py'>, 'select': <module 'select' from 'D:\\anoconda\\DLLs\\select.pyd'>, 'email._parseaddr': <module 'email._parseaddr' from 'D:\\anoconda\\lib\\email\\_parseaddr.py'>, 'calendar': <module 'calendar' from 'D:\\anoconda\\lib\\calendar.py'>, 'email.message': <module 'email.message' from 'D:\\anoconda\\lib\\email\\message.py'>, 'uu': <module 'uu' from 'D:\\anoconda\\lib\\uu.py'>, 'email._encoded_words': <module 'email._encoded_words' from 'D:\\anoconda\\lib\\email\\_encoded_words.py'>, 'email.iterators': <module 'email.iterators' from 'D:\\anoconda\\lib\\email\\iterators.py'>, 'ssl': <module 'ssl' from 'D:\\anoconda\\lib\\ssl.py'>, '_ssl': <module '_ssl' from 'D:\\anoconda\\DLLs\\_ssl.pyd'>, 'urllib.error': <module 'urllib.error' from 'D:\\anoconda\\lib\\urllib\\error.py'>, 'urllib.response': <module 'urllib.response' from 'D:\\anoconda\\lib\\urllib\\response.py'>, 'nturl2path': <module 'nturl2path' from 'D:\\anoconda\\lib\\nturl2path.py'>, 'matplotlib._version': <module 'matplotlib._version' from 'D:\\anoconda\\lib\\site-packages\\matplotlib\\_version.py'>, 'json': <module 'json' from 'D:\\anoconda\\lib\\json\\__init__.py'>, 'json.decoder': <module 'json.decoder' from 'D:\\anoconda\\lib\\json\\decoder.py'>, 'json.scanner': <module 'json.scanner' from 'D:\\anoconda\\lib\\json\\scanner.py'>, '_json': <module '_json' (built-in)>, 'json.encoder': <module 'json.encoder' from 'D:\\anoconda\\lib\\json\\encoder.py'>, 'dateutil': <module 'dateutil' from 'D:\\anoconda\\lib\\site-packages\\dateutil\\__init__.py'>, 'dateutil._version': <module 'dateutil._version' from 'D:\\anoconda\\lib\\site-packages\\dateutil\\_version.py'>} <module '__main__' from 'F:/python/python学习/人工智能/第一阶段day2/3.二分查找算法.py'> 2018 2018 <function qq at 0x000001AB16E1C400> Process finished with exit code 0
setattr和delattr
setattr:设置修改变量
class A:pass a=A() setattr(a,'name','alex1')#给a设置了一个名字 setattr(A,'name','alex')#给类设置了一个静态属性 print(A.name) print(a.name)
delattr:删除一个变量
class A:pass a=A() setattr(a,'name','alex1')#给a设置了一个名字 setattr(A,'name','alex')#给类设置了一个静态属性 print(A.name) print(a.name) delattr(a,'name') print(a.name)#由于这里删除对象的name,所以执行结果就是类的name alex delattr(A,'name') print(a.name)#这里就报错
isinstance和issubclass
isinstance(obj,cls)检查是否obj是否是类 cls 的对象
class A:pass a=A() print(isinstance(a,A)) D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/3.二分查找算法.py True Process finished with exit code 0
issubclass(sub, super)检查sub类是否是 super 类的派生类
class A:pass class B(A):pass a=A() print(isinstance(a,A)) print(issubclass(B,A)) D:\anoconda\python.exe F:/python/python学习/人工智能/第一阶段day2/3.二分查找算法.py True True Process finished with exit code 0