-
定义Student类时,只需要把额外的属性加上,例如score:
class Student(Person): def __init__(self, name, gender, score): super(Student, self).__init__(name, gender) self.score = score
一定要用 super(Student, self).__init__(name, gender) 去初始化父类,否则,继承自 Person 的 Student 将没有 name 和 gender
查看全部 -
lambda是省去return的,但前面的函数不能丢如filter。
查看全部 -
class Person(object): count = 0 def how_many(cls): return cls.count def __init__(self,name): self.name=name Person.count=Person.count+1查看全部
-
def f(x): #定义一个求平方数的函数f return x*x print map(f,[1,2,3,4,5,6,7,8,9]) #t利用map函数,得到一个新的list,每个元素是原来的平方数。 ========================== def format_name(s): return s[:1].upper()+s[1:len(s)+1].lower() print map(format_name, ['adam', 'LISA', 'barT']) -----另一种-------- def format_name(s): return s[0].upper() + s[1:].lower() #s[0]字符串切片第0个字符,s[1:]字符串切片第1个到最后 print map(format_name, ['adam', 'LISA', 'barT'])
查看全部 -
import math #调用math def add(x,y,f): return f(x)+f(y) print add(25,9,math.sqrt) #sqrt是平方根函数)
查看全部 -
类的方法,实例可以用。但是实例的方法,类不可以。
def __init__(self, name):
self.name = name
Person.__count = Person.__count+1
Self 相当于实例,如果Person.__count改成了Self.__count就相当于给实例加了一个属性。如果想让类叠加上去,就得Person.__count
查看全部 -
在class中定义的全部是实例方法,实例方法第一个参数 self 是实例本身。
和属性类似,方法也分实例方法和类方法。
要在class中定义类方法,需要这么写:
class Person(object): count = 0 @classmethod def how_many(cls): return cls.count def __init__(self, name): self.name = name Person.count = Person.count + 1 print Person.how_many() p1 = Person('Bob') print Person.how_many()
通过标记一个 @classmethod,该方法将绑定到 Person 类上,而非类的实例。类方法的第一个参数将传入类本身,通常将参数名命名为 cls,上面的 cls.count 实际上相当于 Person.count。
因为是在类上调用,而非实例上调用,因此类方法无法获得任何实例变量,只能获得类的引用。
查看全部 -
只是需要用 types.MethodType() 把一个函数变为一个方法.
p1 = Person('Bob', 90) p1.get_grade = types.MethodType(fn_get_grade, p1, Person) print p1.get_grade()# => A
查看全部 -
实例的方法就是在类中定义的函数,它的第一个参数永远是 self,指向调用该方法的实例本身,其他参数和一个普通函数是完全一样的.
在实例方法内部,可以访问所有实例属性,这样,如果外部需要访问私有属性,可以通过方法调用获得,这种数据封装的形式除了能保护内部数据一致性外,还可以简化外部调用的难度。
查看全部 -
当实例属性和类属性重名时,实例属性优先级高,它将屏蔽掉对类属性的访问。
可见,千万不要在实例上修改类属性,它实际上并没有修改类属性,而是给实例绑定了一个实例属性
查看全部 -
创建实例必定会调用__init__()方法
查看全部 -
绑定在一个实例上的属性不会影响其他实例,但是,类本身也是一个对象,如果在类上绑定一个属性,则所有实例都可以访问类的属性,并且,所有实例访问的类属性都是同一个!也就是说,实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。类属性也是可以动态添加和修改
查看全部 -
我们可以给一个实例绑定很多属性,如果有些属性不希望被外部访问到怎么办?
Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__),该属性就无法被外部访问
查看全部 -
要定义关键字参数,使用 **kw;
除了可以直接使用self.name = 'xxx'设置一个属性外,还可以通过 setattr(self, 'name', 'xxx') 设置属性。
查看全部 -
有了__init__()方法,每个Person实例在创建时,都会有 name、gender 和 birth 这3个属性,并且,被赋予不同的属性值,访问属性使用.操作符:
查看全部
举报