python反射

面向对象特性与类的重要属性

感情迁移 提交于 2019-12-03 20:33:33
一、面向对象的特性 1. 回顾封装 Python不依赖语言的特性去封装数据,而是通过遵循一定的数据属性或函数属性的命名来达到封装的效果。任何以单下划线开头的名字都应该是内部的、私有的。封装的意义在内部业务逻辑的数据隐藏。Python真正意义上的封装是用类的内外访问来区分的。并且它与Java的private属性有很大的区别,Python并没有强制性的拒绝外部类对私有属性的访问。换句话说,以单下划线或双下划线开头的私有属性仅仅只是一种约定。 (1)第一层封装 : 使用以单下划线开头的私有属性。对象在调用时可直接使用“对象名 . 私有属性名”; (2)第二层封装 :使用以双下划线开头的私有属性。对象在调用时不能直接使用“对象名 . 私有属性名”。需要在双下划线开头的私有属性前加上“_类名”,如:“对象名 . _类名 . 私有属性名”。 (3)第三层封装 :使用自定义的函数来提供接口。明确区分内外,实现内部业务逻辑的封装,并像java的setter和getter方法一样给出外部程序的使用自定义的接口函数,让该接口函数返回一个值私有的性。 2. Python的继承 Python的继承与C++的多继承非常相似,它的继承关系会被解释器解释为一个MRO列表,该MRO列表就是一个简单的所有基类的线性顺序列表。MRO列表的构造是通过一个C3线性化算法来实现的。Python和java一样

Python——装饰器详解

大憨熊 提交于 2019-12-03 15:33:34
Python中的装饰器是你进入Python大门的一道坎,不管你跨不跨过去它都在那里。 为什么需要装饰器 # 我们假设你的程序实现了 say_hello() 和 say_goodbye() 两个函数。 Copy def say_hello(): print "hello!" def say_goodbye(): print "hello!" # bug here if __name__ == '__main__': say_hello() say_goodbye() 但是在实际调用中,我们发现程序出错了,上面的代码打印了两个hello。经过调试你发现是 say_goodbye() 出错了。老板要求调用每个方法前都要记录进入函数的名称,比如这样: Copy [DEBUG]: Enter say_hello() Hello! [DEBUG]: Enter say_goodbye() Goodbye! 好,小A是个毕业生,他是这样实现的。 Copy def say_hello(): print "[DEBUG]: enter say_hello()" print "hello!" def say_goodbye(): print "[DEBUG]: enter say_goodbye()" print "hello!" if __name__ == '__main__': say

python学习-68 反射

旧巷老猫 提交于 2019-12-03 14:31:29
                    反射 1.什么是反射? 反射的概念是有Smith在1982年首次提出的,主要是指程序可以访问、检测和修正它本身状态或行为的一种能力(自省)。 2.以下四个方法可以实现自省 hasattr(object,name) getattr(object,name,default=None) setattr(x,y,v) delattr(x,y) class Car: feture = 'big' def __init__(self,name,color): self.name = name self.color = color def get_car(self): print('this car is %s' %self.name) def color_car(self): print('this car is %s ' % self.color) c1 = Car('benchi','red') print(hasattr(c1,'name')) # 查看是否能调用name这个属性 print(getattr(c1,'name')) # 查看调用name后的值 setattr(c1,'size','big') # 修改 print(c1.__dict__) del c1.size # 删除 print(c1.__dict__) 运行结果: True

python学习66-面向对象-封装

依然范特西╮ 提交于 2019-12-03 11:17:14
                  封装 1.什么是封装? 根据名字寓意为:把一个东西装起来,然后密封,类似这样的面向对象的编程为封装。 真正的封装是明确的区别内外,只能在内部用,外部无法调用。 2. 举例: class Car: _star = 'benchi' # "_"表明是隐藏属性,不能在外部使用(不代表无法调用到) __star1 = 'baoma' # "__"python给自动重命名,命名为"_Car__star1" def __init__(self,name,type): self.name = name self.type = type def get_type(self): print('%s是%s类型的车' % (self.name,self.type)) c1 = Car('奔驰E600','大型高档轿车') c1.get_type() print('=========================') print(c1._star) print(c1._Car__star1) 运行结果: 奔驰E600是大型高档轿车类型的车 ========================= benchi baoma Process finished with exit code 0 3.意义 第一个层面的封装,就是把东西装进麻袋。 类就是一种麻袋。

python基础面试题(全网最全!)

只愿长相守 提交于 2019-12-03 07:50:31
目录 1、为什么学习Python? 2、通过什么途径学习的Python? 3、Python和Java、PHP、C、C#、C++等其他语言的对比? 4、简述解释型和编译型编程语言? 5、Python解释器种类以及特点? 6、位和字节的关系? 7、b、B、KB、MB、GB 的关系? 8、请至少列举5个 PEP8 规范 9、通过代码实现如下转换: 10、请编写一个函数实现将IP地址转换成一个整数。 11、python递归的最大层数? 12、求结果: 13、ascii、unicode、utf-8、gbk 区别? 14、字节码和机器码的区别? 15、三元运算规则以及应用场景? 16、列举 Python2和Python3的区别? 17、用一行代码实现数值交换: 18、Python3和Python2中 int 和 long的区别? 19、xrange和range的区别? 20、文件操作时:xreadlines和readlines的区别? 21、列举布尔值为False的常见值? 22、字符串、列表、元组、字典每个常用的5个方法? 23、lambda表达式格式以及应用场景? 24、pass的作用? 25、*arg和**kwarg作用? 26、is和==的区别? 27、简述Python的深浅拷贝以及应用场景? 28、Python垃圾回收机制? 29、python的可变类型和不可变类型? 30、求结果:

python面试题300多题

蓝咒 提交于 2019-12-03 06:56:39
第一部分 Python基础篇(80题) 为什么学习Python? 通过什么途径学习的Python? Python和Java、PHP、C、C#、C++等其他语言的对比? 简述解释型和编译型编程语言? Python解释器种类以及特点? 位和字节的关系? b、B、KB、MB、GB 的关系? 请至少列举5个 PEP8 规范(越多越好)。 通过代码实现如下转换: 二进制转换成十进制:v = “0b1111011”
 十进制转换成二进制:v = 18
 八进制转换成十进制:v = “011”
 十进制转换成八进制:v = 30
 十六进制转换成十进制:v = “0x12”
 十进制转换成十六进制:v = 87 请编写一个函数实现将IP地址转换成一个整数。 如 10.3.9.12 转换规则为: 10 00001010 
 3 00000011
 9 00001001 
 12 00001100
 再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ? python递归的最大层数? 求结果: v1 = 1 or 3
 v2 = 1 and 3
 v3 = 0 and 2 and 1 
 v4 = 0 and 2 or 1 
 v5 = 0 and 2 or 1 or 4 
 v6 = 0 or Flase and 1 ascii

每日面试之 面试基础1

删除回忆录丶 提交于 2019-12-03 02:44:41
目录 面试基础1 1 、sorted和sort这俩有什么区别 2、exec() eval()的区别 3、元类可以做什么 4、新式类和经典类 5、迭代器和生成器 6.关于装饰器 7.猴子补丁 8.==和is 9.浅拷贝和深拷贝 10.可变类型和不可变类型 11.Python的自省功能 12.Python中的下划线 13only/defer/select_related/perfetch_related 14为什么学习python 15通过什么途径学习的Python? 16Python和Java、PHP、C、C#、C++等其他语言的对比? 17简述解释型和编译型编程语言? 18Python解释器种类以及特点? 19位和字节的关系? 20 b、B、KB、MB、GB 的关系? 21请至少列举5个 PEP8 规范(越多越好)。 面试基础1 1 、sorted和sort这俩有什么区别 sorted() l=[1,3] l.sort() Python list内置sort()方法用来排序,也可以用python内置的全局sorted()方法来对可迭代的序列排序生成新的序列。 sort是容器的函数,用List的成员函数sort进行排序 sorted是Python的内建函数相同的参数,用built-in函数sorted进行排序 sorted(iterable,key=None,reverse

2019安全渗透类工具合集

匿名 (未验证) 提交于 2019-12-03 00:12:02
子域名爆破枚举或接管 https://github.com/lijiejie/subDomainsBrute - Lijiejie开发的一款使用广泛的子域名爆破枚举工具 评分 编程语言 : Python 2.x | 仍在维护 https://github.com/ring04h/wydomain - 猪猪侠开发的一款域名收集全面、精准的子域名枚举工具 评分 编程语言 : Python 2.x | 仍在维护 https://github.com/le4f/dnsmaper - 子域名枚举爆破工具以及地图位置标记 评分 编程语言 : Python 2.x | 仍在维护 https://github.com/0xbug/orangescan - 提供web界面的在线子域名信息收集工具 评分 编程语言 : Python 2.x | 仍在维护 https://github.com/TheRook/subbrute - 高效精准的子域名爆破工具,同时也是扫描器中最常用的子域名API库 评分 编程语言 : Python 2.x | 仍在维护 https://github.com/We5ter/GSDF - 基于谷歌SSL透明证书的子域名查询脚本 评分 编程语言 : Python 2.x | 仍在维护 https://github.com/mandatoryprogrammer

python学习笔记_day07

匿名 (未验证) 提交于 2019-12-02 22:51:30
setattr(obj, str, value) delattr(obj, str) json pickle 模块就是py文件, 模块导入就是执行文件 import module_name from package import module_name 广义的封装: 把变量和函数都放在类中 狭义的封装: 把变量和方法隐藏起来, 不对外公开, 只在内部引用 class Foo : # 公有变量 a = 'aa' # 私有变量 __b = 'bb' # 私有变量只允许这样调用 def show (self) : print(self.__b) x = Foo() x.__b # --> 报错 x.show() # --> 'bb' ''' 私有变量实际上是把变量__b转换为了_Foo__b, 所以实际调用是x._Foo__b, 通常不这么使用 ''' 坑 class Foo : def __init__ (self) : self.__func() def __func (self) : print( 'in Foo' ) class Son (Foo) : def __func (self) : print( 'in Son' ) s = Son() ''' 1. 调用Son类中__init__方法进行实例化 2. Son中没有__init__方法, 向上寻找,

经典Python面试题之Python基础篇

匿名 (未验证) 提交于 2019-12-02 22:51:30
1. 为什么学习Python? 2. 通过什么途径学习的Python? 3. Python和Java、PHP、C、C#、C++等其他语言的对比? 4. 简述解释型和编译型编程语言? 5. Python解释器种类以及特点? 6. 位和字节的关系? 7. b、B、KB、MB、GB 的关系? 8. 请至少列举5个 PEP8 规范(越多越好)。 9. 通过代码实现如下转换: 十进制转换成十六进制:v = 87 10. 请编写一个函数实现将IP地址转换成一个整数。 如 10.3.9.12 转换规则为: 再将以上二进制拼接起来计算十进制结果:00001010 00000011 0000100100001100 = ? 11. python递归的最大层数? 12. 求结果: 13. ascii、unicode、utf-8、gbk 区别? 14. 字节码和机器码的区别? 15. 三元运算规则以及应用场景? 16. 列举 Python2和Python3的区别? 17. 用一行代码实现数值交换: 18. Python3和Python2中 int 和 long的区别? 19. xrange和range的区别? 20. 文件操作时:xreadlines和readlines的区别? 21. 列举布尔值为False的常见值? 22. 字符串、列表、元组、字典每个常用的5个方法? 23.