为了账号安全,请及时绑定邮箱和手机立即绑定

python进阶

廖雪峰 移动开发工程师
难度中级
时长 3小时33分
学习人数
综合评分9.20
575人评价 查看评价
9.6 内容实用
9.0 简洁易懂
9.0 逻辑清晰
print isinstance(t, Person)
print isinstance(t, Student)
print isinstance(t, Teacher)
print isinstance(t, object)
class Teacher(Person):

def __init__(self, name, gender, course):
super(Teacher, self).__init__(name, gender)
self.course = course
Pyhton中有普通继承方式和super继承方式,普通继承:
class D(B,C):
def __init__(self,a):
B.__init__(self,a)
C.__init__(self,a)
如果修改了父类名称子类中涉及多处修改,而且在多态继承中需要重复写,因此,python引入了super()机制:
class D(B,C):
def __init__(self,a):
super(D,self).__init__(a)
super中保证公共父类仅被执行一次,执行顺序mor
http://www.cnblogs.com/junneyang/p/5993034.html 参考
0基础没有面向对象和封装的认知,有些知识点要弄懂几乎是不可能的
_xxx,可以再子类中使用相当于protected ,虽然也可以被外界访问但是按照习惯不应该被访问
__xxx不可以在子类中使用,相当于private,不可以被外界访问,但是python中没有私有化,只是将__xxx转化成了_Classname__xxx,所以访问__xxx会报错,可以访问 '实例对象._Classname__xxx'
__xxx__在python的类中被称为特殊属性,有很多预定义的特殊属性可以使用,但是通常不用于普通属性
感觉这样好理解
class Person(object):
#*args表示多个无名参数是一个tuple,**kw表示多个关键字参数是一个dict ,如果两个同时使用 *args要在**kw之前
def __init__(self,name,**kw):
self.job=kw['job']
self.age=kw['age']
xiaoming = Person('Xiao Ming', job='Student',age=20)
print xiaoming.name
print xiaoming.job
print xiaoming.age
这个题目出得不好。应该至少搞点初始化啥的才好
def is_not_empty(s):
return s and len(s.strip()) > 0

print filter(is_not_empty, ['test', None, '', 'str', ' ', 'END'])

print filter(lambda s: s and len (s.strip())>0,['test',None,'','str','','END'])
def count():
fs = []
for i in range(1, 4):
def f(j):
def g():
return j*j
return g
r = f(i)
fs.append(r)
return fs

f1, f2, f3 = count()
print f1(), f2(), f3()
有没有能够每步发个注释的,不了解内部运算结构。
def calc_prod(lst):
def lazy_prod():
def prod(x,y):
return x*y
return reduce(prod,lst)
return lazy_prod

f = calc_prod([1,2,3,4])
print f()

第一行是Lst,不是1,照着打都错好几回。
def cmp_ignore_case(s1, s2):
u1 = s1.upper()
u2 = s2.upper()
if u1 < u2:
return -1
if u2 > u2:
return 1
return 0

print sorted(['bob', 'about', 'Zoo', 'Credit'],cmp_ignore_case)
>>> print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in cmp_ignore_case
TypeError: 'str' object is not callable
>>>

啥意思
在python 3.0.0.0以后, reduce已经不在built-in function里了, 要用它就得from functools import reduce.

from functools import reduce
def calc_prod(lst):
def lazy_prod():
def f(x, y):
return x * y
return reduce(f, lst, 1)
return lazy_prod
f = calc_prod([1, 2, 3, 4])
print (f())
在学PHP的时候, 并没有类方法和实例方法的区分, 类中的self就是指类自身.
而python 用 self 关键字来指代实例, 用 @classmethod 来装饰一个类方法, 用cls来指代类自身. 其实python是更为严谨了!!!
这一题的目的是告诉大家, 将一个类成员(属性,方法) 通过 双下划线前缀 '__' 私有化之后, 这个类成员将无法从外部访问, 即无法用 Person.__count 来访问.
私有属性只能被类自身访问. 要访问到 __count属性的方法是在类内部定义一个方法:
def get_count(self):
return self.__count
通过调用 .get_count() 方法即可返回 __count属性, 从而避免了这个属性被 '意外' 修改
课程须知
本课程是Python入门的后续课程 1、掌握Python编程的基础知识 2、掌握Python函数的编写 3、对面向对象编程有所了解更佳
老师告诉你能学到什么?
1、什么是函数式编程 2、Python的函数式编程特点 3、Python的模块 4、Python面向对象编程 5、Python强大的定制类

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消