-
Python特殊方法的特点: 特殊方法定义在class中 不需要直接调用,Python的某些函数或操作符会调用对应的特殊方法 有关联的特殊方法要同时定义查看全部
-
可以用 dir() 函数获取变量的所有属性,dir()返回的属性是字符串列表.查看全部
-
这种行为称为多态。也就是说,方法调用将作用在 x 的实际类型上。s 是Student类型,它实际上拥有自己的 whoAmI()方法以及从 Person继承的 whoAmI方法,但调用 s.whoAmI()总是先查找它自身的定义,如果没有定义,则顺着继承链向上查找,直到在某个父类中找到为止。 这是动态语言和静态语言(例如Java)最大的差别之一。动态语言调用实例方法,不检查类型,只要方法存在,参数正确,就可以调用。 由于Python的动态特性,json.load()并不一定要从一个File对象读取内容。任何对象,只要有read()方法,就称为File-like Object,都可以传给json.load()。查看全部
-
函数isinstance()可以判断一个变量的类型,既可以用在Python内置的数据类型如str、list、dict,也可以用在我们自定义的类,它们本质上都是数据类型。查看全部
-
类与类关系: 1.is 适用继承关系 2.has 适用组合关系 继承类时,重写__init__后不会自动调用父类__init__.使用super(subclass_name,self).__init__(args)调用父类__init__查看全部
-
和属性类似,方法也分实例方法和类方法。 在class中定义的全部是实例方法,实例方法第一个参数 self 是实例本身。 通过标记一个 @classmethod,该方法将绑定到 Person 类上,而非类的实例。类方法的第一个参数将传入类本身,通常将参数名命名为 cls。 因为是在类上调用,而非实例上调用,因此类方法无法获得任何实例变量,只能获得类的引用。查看全部
-
只有以双下划线开头的"__job"不能直接被外部访问。 以"__xxx__"的形式定义,那它又可以被外部访问了,以"__xxx__"定义的属性在Python的类中被称为特殊属性,有很多预定义的特殊属性可以使用,通常我们不要把普通属性用"__xxx__"定义。 以单下划线开头的属性"_xxx"虽然也可以被外部访问,但是,按照习惯,他们不应该被外部访问。查看全部
-
导入不同模块的某些函数,如果函数名冲突,可以采用 别名的方法来避免,使用 name as new-name.查看全部
-
1. 将代码分拆放入多个py文件,好处:同一个名字的变量互不影响 2. 同名模块放入不同包中 3. 包就是文件夹,模块就是xxx.py文件,且包可以有多级 4. 区分包和普通目录:包下面有个_init_.py,每层必须要有查看全部
-
偏函数,对于拥有多个参数的函数,可以用偏函数这个工具,固定某个参数为某个默认值,并返回简化后的函数。查看全部
-
由于decorator返回的新函数函数名已经不是原函数,而是@log内部定义的。这对于那些依赖原函数名的代码就会失效。decorator还改变了函数的__doc__等其它属性。如果要让调用者看不出一个函数经过了@decorator的“改造” ,就需要把原函数的一些属性复制到新函数中。 Python内置的functools可以用来自动化完成这个“复制”的任务,@functools.wraps应该作用在返回的新函数上。 最后需要指出,由于我们把原函数签名改成了(*args, **kw),因此,无法获得原函数的原始参数信息。即便我们采用固定参数来装饰只有一个参数的函数。查看全部
-
不带参数的装饰器 是一层高阶函数: 内层要调用传入的函数,返回调用值,外层函数返回内层函数。 带参数的装饰器 两层高阶函数: 最内层要调用传入的函数,返回调用值,次外层返回内层,最外层返回次外层函数。 装饰器的参数通过最外层函数传入,并在内部使用,具有闭包特征,闭包函数不宜拆开。查看全部
-
装饰器,一种高阶函数的表达方法,传入函数,返回函数。 将需要完善的函数作为参数 传入高阶函数,在高阶函数内,调用这个函数,并返回一个函数名,代替待完善函数。 用途:1,打印日志 2,检测性能 3数据库事物 4 URL路由查看全部
-
约分方法:同除以最大公约数 求最大公约数: 方法1: def gcd(a, b): if b == 0: return a return gcd(b, a % b) 方法2: from fractions import gcd gcd(a,b) # 返回a,b的最大公约数查看全部
-
__len__ 如果一个类表现得像一个list,要获取有多少个元素,就得用 len() 函数。 要让 len() 函数工作正常,类必须提供一个特殊方法__len__(),它返回元素的个数。 a,b=b,a+b 相当于: temp=b #先保存b的原值 b=a+b #赋b新值 a=temp #将b的原值赋予a 实际就是C语言中的数据交换过程,也可理解为先计算右边后赋值。查看全部
举报
0/150
提交
取消