print isinstance(t, Person)
print isinstance(t, Student)
print isinstance(t, Teacher)
print isinstance(t, object)
print isinstance(t, Student)
print isinstance(t, Teacher)
print isinstance(t, object)
2017-11-02
class Teacher(Person):
def __init__(self, name, gender, course):
super(Teacher, self).__init__(name, gender)
self.course = course
def __init__(self, name, gender, course):
super(Teacher, self).__init__(name, gender)
self.course = course
2017-11-02
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 参考
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 参考
2017-11-02
_xxx,可以再子类中使用相当于protected ,虽然也可以被外界访问但是按照习惯不应该被访问
__xxx不可以在子类中使用,相当于private,不可以被外界访问,但是python中没有私有化,只是将__xxx转化成了_Classname__xxx,所以访问__xxx会报错,可以访问 '实例对象._Classname__xxx'
__xxx__在python的类中被称为特殊属性,有很多预定义的特殊属性可以使用,但是通常不用于普通属性
__xxx不可以在子类中使用,相当于private,不可以被外界访问,但是python中没有私有化,只是将__xxx转化成了_Classname__xxx,所以访问__xxx会报错,可以访问 '实例对象._Classname__xxx'
__xxx__在python的类中被称为特殊属性,有很多预定义的特殊属性可以使用,但是通常不用于普通属性
2017-11-01
感觉这样好理解
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
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
2017-11-01
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'])
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'])
2017-11-01
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()
有没有能够每步发个注释的,不了解内部运算结构。
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()
有没有能够每步发个注释的,不了解内部运算结构。
2017-11-01
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 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,照着打都错好几回。
2017-11-01
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)
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)
2017-11-01
>>> 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
>>>
啥意思
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
>>>
啥意思
2017-11-01
在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())
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())
2017-11-01
在学PHP的时候, 并没有类方法和实例方法的区分, 类中的self就是指类自身.
而python 用 self 关键字来指代实例, 用 @classmethod 来装饰一个类方法, 用cls来指代类自身. 其实python是更为严谨了!!!
而python 用 self 关键字来指代实例, 用 @classmethod 来装饰一个类方法, 用cls来指代类自身. 其实python是更为严谨了!!!
2017-11-01
这一题的目的是告诉大家, 将一个类成员(属性,方法) 通过 双下划线前缀 '__' 私有化之后, 这个类成员将无法从外部访问, 即无法用 Person.__count 来访问.
私有属性只能被类自身访问. 要访问到 __count属性的方法是在类内部定义一个方法:
def get_count(self):
return self.__count
通过调用 .get_count() 方法即可返回 __count属性, 从而避免了这个属性被 '意外' 修改
私有属性只能被类自身访问. 要访问到 __count属性的方法是在类内部定义一个方法:
def get_count(self):
return self.__count
通过调用 .get_count() 方法即可返回 __count属性, 从而避免了这个属性被 '意外' 修改
2017-11-01