断点调试,issubclass和ininstance的使用
一等公民
只要可以把一个东西赋值给一个变量,这个东西就叫一等公民
断点调试
在想要加断点的地方用鼠标点击一下,你会看到一个红色圆圈
变红的地方,程序执行到,就会暂停
断电应该加载报错之前
绿色箭头表示加速跳到下一个断点执行
控制台报错:点击你能看懂的最后一行,光标会快速定位到错误代码,在错误代码上方加断点,断点调试
issubclass和isinstance
issubclass:判断第一个类是不是第二个类的子类,返回true或者false
issubclass()
class Foo():
pass
class Bar(Foo):
pass
class Tt(Bar):
pass
print(Bar.__bases__)
print(issubclass(Bar,Foo))
print(issubclass(Tt,object))
ininstance:判断第一个参数是不是第二个参数的对象,返回true或者false
class Foo():
pass
class Tt():
pass
f=Foo()
print(isinstance(f,Foo))
print(isinstance(f,Tt))
反射
用户输入一段字符串,执行该字符串对应的方法
hasatter():判断一个属性是否在对象中,返回True或者False
class People:
country='China'
def __init__(self,name):
self.name=name
def eat(self):
print('%s is eating'% self.name)
peo=People('NICK')
print(hasattr(peo,'eat'))
getattr():通过字符串获取属性或方法,如果获取到了,就会返回相应的属性或方法
class People:
country='China'
def __init__(self,name):
self.name=name
def eat(self):
print('%s is eating'% self.name)
peo=People('NICK')
print(getattr(peo,'xxxx',None))
setattr():通过字符串来设置属性或方法
class People:
country='China'
def __init__(self,name):
self.name=name
def eat(self):
print('%s is eating'% self.name)
peo=People('NICK')
setattr(peo,'age',18)
print(peo.age)
delattr():通过字符串来设置属性或方法
class People:
country='China'
def __init__(self,name):
self.name=name
def eat(self):
print('%s is eating'% self.name)
peo=People('NICK')
delattr(peo,'name')
print(peo.__dict__)
内置方法
_str_:如果不重写__str__ ,print打印出内存地址,如果重写了,会打印出你想要的
_repr_:跟str类似,在交互式命令下直接写变量名,会执行__repr__
__setattr__,__delattr__,__getattr__
点拦截方法
如果去对象中去属性,一旦取不到,会进入到__getattr__
如果去对象中赋值属性,一旦取不到,会进入__setattr__
如果删除对象中的属性,会进入到__delattr__
写一个类继承字典,让它可以.取值,可以中括号取值
class Mydict(dict):
def __init__(self,**kwargs):
super().__init__(**kwargs)
def__getattr__(self,item):
return self[item]
def __setattr__(self,key,value):
self[key]=value
di=Mydict(name='lzs',age=18)
print(di['name'])
print(di.name)
di.sex='male'
di['sex']='male'
_item_系列,对象通过[]中括号取值,赋值,删除值的时候会调用
class Foo:
def __init__(self,name)
self.name=name
def __getitem_(self,item):
name=getattr(self,item)
return name
def __setitem__(self,key,value):
print('obj[key]=lzs赋值时,执行我')
self.__dict__[key]=value
def __delitem__(self,key):
print('del obj[key]时,执行我')
self.__dict__.pop(key)
f=Foo('lzs')
print(f['name'])
_call_:对象加括号会调用它
class Foo():
def __call__(self):
print('lllll')
f=Foo()
f()
_enter_和__exit__:上下文管理器
with open() as f:
pass
class Mydict():
def__getattr__(self,item):
print('xxxx')
return '该属性不存在'
m=Mydict()
断点调试,issubclass和ininstance的使用的更多相关文章
- issubclass 和 isinstance和断点调试
issubclass 和 isinstance和断点调试 一.issubclass 判断第一个类是不是第二个类的子类,返回True或Flase class Foo: pass class Bar(Fo ...
- PhpStorm集成xdebug进行断点调试
本文介绍如何使用PhpStorm集成xdebug在本地开发环境进行断点调试的技巧. 我配置的环境是:Windows10 + PhpStorm10.0.1 + PHP5.6. 1. 下载xdebug的扩 ...
- PyCharm断点调试django
我在用PyCharm开发django程序的时候,对于打印日志调试程序的方式感觉还是有点麻烦和不直观,所以研究了一下断点调试的方法如下: 1.打开你的工程,在菜单栏里找到Run-->Edit Co ...
- netbeans-xdebug 断点调试php
来自NetBeans官网的帮助文档: https://netbeans.org/kb/docs/php/debugging_zh_CN.html 但具体问题,我们还是要说下 准备工作 本地部署的ser ...
- Drools mvel方言drl断点调试方法
开发环境:myeclipse2014, jdk1.8.0.91,drools6.4.0.Final, drools-eclipse-plugin,mvel2-2.2.6.Final问题描述:drl使 ...
- Eclipse断点调试
转自:http://blog.csdn.net/maritimesun/article/details/7815903 作为开发人员,掌握开发环境下的调试技巧十分有必要.去年就想把关于Eclipse断 ...
- js断点调试心得
虽然网上已经有多的数不清的调试教程了,但仍然没有发现哪篇文章写的通俗易懂,索性自己尝试写写自己的一些使用习惯或者说是心得,希望对那些还不是很懂得使用断点调试的孩子有一些帮助(大神请无视~). 1.断点 ...
- chrome developer tool—— 断点调试篇
断点,调试器的功能之一,可以让程序中断在需要的地方,从而方便其分析.也可以在一次调试中设置断点,下一次只需让程序自动运行到设置断点位置,便可在上次设置断点的位置中断下来,极大的方便了操作,同时节省了时 ...
- .NET C#微信公众号开发远程断点调试(本地远程调试生产环境代码)
最近在做微信公众号开发,由于之前没有接触过,突然发现调试不方便,不方便进行断点跟踪调试.因为微信那边绑定的服务器地址必须是公网地址,但是还是想进行断点调试(毕竟这样太方便了,程序有Bug,一步步断点跟 ...
随机推荐
- mysql中获取本月第一天、本月最后一天、上月第一天、上月最后一天等等
转自: https://blog.csdn.net/min996358312/article/details/61420462 1.当函数使用时,即interval(),为比较函数,如:interva ...
- [CF2B] The least round way - dp
给定由非负整数组成的n×n 的正方形矩阵,你需要寻找一条路径: 以左上角为起点 每次只能向右或向下走 以右下角为终点 并且,如果我们把沿路遇到的数进行相乘,积应当是最小"round" ...
- [APIO2010] 回文串 - 回文自动机
经典题吧 我觉得我要换个板子,这结构体板子真TM不顺手 #include <bits/stdc++.h> using namespace std; const int N = 2e6 + ...
- [转]shallow heap & retained heap
所有包含Heap Profling功能的工具(MAT, Yourkit, JProfiler, TPTP等)都会使用到两个名词,一个是Shallow Size,另一个是 Retained Size. ...
- 01 : Java入门
Java概述 Java之父·詹姆斯·高斯林(James Gosling) 1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位,毕业后到IBM工作 ...
- js中的闭包理解
闭包是一个比较抽象的概念,尤其是对js新手来说.书上的解释实在是比较晦涩,对我来说也是一样. 但是他也是js能力提升中无法绕过的一环,几乎每次面试必问的问题,因为在回答的时候.你的答案的深度,对术语的 ...
- MySQL启动和停止
MySQL视为大仓库,关闭的时候有权限有身份都无法进入使用的时候要保持启用状态 方式一: 计算机游击找到“管理”打开 左侧栏目中找到“服务和应用程序”打开 打开服务 找到MySQL...,右击.... ...
- JavaScript的BOM对象
JavaScript的BOM对象 BOM:浏览器对象模型 JavaScript和浏览器的关系:JavaScript的诞生就是为了能够让它再浏览器中运行. 1. 操作BOM对象 1.1 window w ...
- 并查集路径分裂优化 UnionFind PathSpliting(C++)
/* * UnionFind.h * 有两种实现方式,QuickFind和QuickUnion * QuickFind: * 查找O(1) * 合并O(n) * QuickUnion:(建议使用) * ...
- python&selenium自动化测试实战项目
https://www.cnblogs.com/linuxchao/p/linuxchao-python-selenium-demo.html