-
map(f, list) reduce(f, list)查看全部
-
import math def is_sqr(x): r = int(math.sqrt(x)) return r*r==x print filter(is_sqr, range(1, 101))查看全部
-
math.sqrt查看全部
-
当实例属性和类属性重名时,实例属性优先级高查看全部
-
类是模板,而实例则是根据类创建的对象。 定义类属性可以直接在 class 中定义: class Person(object): address = 'Earth' def __init__(self, name): self.name = name 因为类属性是直接绑定在类上的,所以,访问类属性不需要创建实例,就可以直接访问: print Person.address # => Earth 对一个实例调用类的属性也是可以访问的,所有实例都可以访问到它所属的类的属性: p1 = Person('Bob') p2 = Person('Alice') print p1.address # => Earth print p2.address # => Earth 由于Python是动态语言,类属性也是可以动态添加和修改的: Person.address = 'China' print p1.address # => 'China' print p2.address # => 'China' 因为类属性只有一份,所以,当Person类的address改变时,所有实例访问到的类属性都改变了。 任务 请给 Person 类添加一个类属性 count,每创建一个实例,count 属性就加 1,这样就可以统计出一共创建了多少个 Person 的实例。 ?不会了怎么办 由于创建实例必定会调用__init__()方法,所以在这里修改类属性 count 很合适。 参考代码: class Person(object): count = 0 def __init__(self, name): Person.count = Person.count + 1 self.name = name p1 = Person('Bob') print Person.count # => 1 p2 = Person('Alice') print Person.count # => 2 p3 = Person('Tim') print Person.count # => 3查看全部
-
代码不大和答案一样,尖括号没法输出查看全部
-
属性由双下划线开头(__),该属性就无法被外部访问。看例子: class Person(object): def __init__(self, name): self.name = name self._title = 'Mr' self.__job = 'Student' p = Person('Bob') print p.name # => Bob print p._title # => Mr print p.__job # => Error Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'Person' object has no attribute '__job' 可见,只有以双下划线开头的"__job"不能直接被外部访问。 但是,如果一个属性以"__xxx__"的形式定义,那它又可以被外部访问了,以"__xxx__"定义的属性在Python的类中被称为特殊属性,有很多预定义的特殊属性可以使用,通常我们不要把普通属性用"__xxx__"定义。 以单下划线开头的属性"_xxx"虽然也可以被外部访问,但是,按照习惯,他们不应该被外部访问。查看全部
-
在定义 Person 类时,可以为Person类添加一个特殊的__init__()方法,当创建实例时,__init__()方法被自动调用,我们就能在此为每个实例都统一加上以下属性: class Person(object): def __init__(self, name, gender, birth): self.name = name self.gender = gender self.birth = birth __init__() 方法的第一个参数必须是 self(也可以用别的名字,但建议使用习惯用法),后续参数则可以自由指定,和定义函数没有任何区别。 请定义Person类的__init__方法,除了接受 name、gender 和 birth 外,还可接受任意关键字参数,并把他们都作为属性赋值给实例。 ?不会了怎么办 要定义关键字参数,使用 **kw; 除了可以直接使用self.name = 'xxx'设置一个属性外,还可以通过 setattr(self, 'name', 'xxx') 设置属性。 参考代码: class Person(object): def __init__(self, name, gender, birth, **kw): self.name = name self.gender = gender self.birth = birth for k, v in kw.iteritems(): setattr(self, k, v) xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student') print xiaoming.name print xiaoming.job查看全部
-
学习py查看全部
-
想显示汉字,别忘了加#coding=utf-8查看全部
-
python、定义的特殊方法查看全部
-
if u1 < u2: return -1 if u1 > u2: return 1查看全部
-
Python帮助文档中对sorted方法的讲解: sorted(iterable[,cmp,[,key[,reverse=True]]]) 作用:Return a new sorted list from the items in iterable. 第一个参数是一个iterable,返回值是一个对iterable中元素进行排序后的列表(list)。 可选的参数有三个,cmp、key和reverse。 1)cmp指定一个定制的比较函数,这个函数接收两个参数(iterable的元素),如果第一个参数小于第二个参数,返回一个负数;如果第一个参数等于第二个参数,返回零;如果第一个参数大于第二个参数,返回一个正数。默认值为None。 2)key指定一个接收一个参数的函数,这个函数用于从每个元素中提取一个用于比较的关键字。默认值为None。 3)reverse是一个布尔值。如果设置为True,列表元素将被倒序排列。 通常来说,key和reverse比一个等价的cmp函数处理速度要快。这是因为对于每个列表元素,cmp都会被调用多次,而key和reverse只被调用一次。查看全部
-
python查看全部
-
函数名就是指向函数的变量 所以变量可以指向函数 高阶函数 能接手函数做参数的函数查看全部
举报
0/150
提交
取消