-
由于list包含的元素可以是任何类型,因此,map() 不仅仅可以处理只包含数值的 list,事实上它可以处理包含任意类型的 list,只要传入的函数f可以处理这种数据类型。
查看全部 -
请创建包含两个 Person 类的实例的 list,并给两个实例的 name赋值,然后按照 name 进行排序。
参考代码:
class Person(object): pass p1 = Person() p1.name = 'Bart' p2 = Person() p2.name = 'Adam' p3 = Person() p3.name = 'Lisa' L1 = [p1, p2, p3] L2 = sorted(L1, lambda p1, p2: cmp(p1.name, p2.name)) print L2[0].name print L2[1].name print L2[2].name
查看全部 -
特殊方法:
1)定义在class中。
2)不需要直接调用。
3)只需编写用到的特殊方法。
4)有关联性的特殊方法都必须实现。
比如:__getattr__、__setattr__、_delattr__
查看全部 -
类具有继承关系,并且子类类型可以向上转型看做父类类型。
多态:方法调用将作用在x的实际类型上,并且调用方法总是先查找它自身(类型)中的定义,如果没有定义,则顺着继承链向上查找,直到在某个父类中找到为止。
由于Python是动态语言,所以传递给方法的参数x不应是父类或子类,任何数据类型的实例都可以,只要它有该方法即可。(动态语言调用实例方法不检查类型,只要方法存在,参数正确,就可以调用)
查看全部 -
@performance('ms')相当于执行 step1 = performance(''ms') 接着执行 step2 = perf_decorator('factorial') 而factorial(10)即调用step2,也就是执行wrapper(*args,**kw),函数中的参数变为了10,最后的return r即为return f(*args,**kw),也就是执行原来的factorial(10)
查看全部 -
class中的定义的实例方法其实也是属性,它实际上是一个函数对象(没有括号时返回的是一个绑定到实例的函数对象,打括号时才是方法调用)。
可用types.MethodType()把一个函数变为一个方法,然后动态地添加到实例上。
给一个实例动态添加方法并不常见,直接在class中定义要更直观)
查看全部 -
实例的方法就是在类中定义的函数,它的第一个参数永远是
self
,指向调用该方法的实例本身,其他参数和一个普通函数是完全一样的:
class
Person(
object
):
def
__init__(
self
, name):
self
.__name
=
name
def
get_name(
self
):
return
self
.__name
在实例方法内部,可以访问所有实例属性,这样,如果外部需要访问私有属性,可以通过方法调用获得,这种数据封装的形式除了能保护内部数据一致性外,还可以简化外部调用的难度。
查看全部 -
Mark.
查看全部 -
Mark.
查看全部 -
绑定在一个实例上的属性不会影响其他实例,但是,类本身也是一个对象,如果在类上绑定一个属性,则所有实例都可以访问类的属性,并且,所有实例访问的类属性都是同一个!也就是说,实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。
查看全部 -
定义类的实例属性时,python根据属性名来对属性权限进行控制。
双下划线开头:__xxx 不能直接被外部访问
双下划线开头,双下划线结尾:__xxx__ 可以被外部访问,在python的类中被称为特殊属性(有很多预定义的特殊属性可以使用,通常我们不要把普通属性以这种方式命名)
单下划线开头: _xxx 虽然可以为外部访问,但是按照习惯不应该被外部访问
查看全部 -
class Person(object): def __init__(self, name, gender, birth, **kw): # 使用 **kwargs 输入dict,然后用setattr(self,k,v)设置任意属性; self.name = name self.gender = gender self.birth = birth for k, v in kw.items(): setattr(self, k, v) # 在python3中,使用**kw,或者**kwargs都可以,但是iteritems已经不能用了,都被items取代了。
查看全部 -
python查看全部
-
闭包:内层函数引用外层函数的变量,然后返回内层函数的情况
查看全部 -
像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。
闭包的特点是返回的函数还引用了外层函数的局部变量,所以,要正确使用闭包,就要确保引用的局部变量在函数返回后不能变
查看全部
举报