-
要在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。
因为是在类上调用,而非实例上调用,因此类方法无法获得任何实例变量,只能获得类的引用。
查看全部 -
要在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() 把一个函数变为一个方法:
import types def fn_get_grade(self): if self.score >= 80: return 'A' if self.score >= 60: return 'B' return 'C' class Person(object): def __init__(self, name, score): self.name = name self.score = score p1 = Person('Bob', 90)p1.get_grade = types.MethodType(fn_get_grade, p1, Person)print p1.get_grade()# => Ap2 = Person('Alice', 65) print p2.get_grade()# ERROR: AttributeError: 'Person' object has no attribute 'get_grade' # 因为p2实例并没有绑定get_grade
查看全部 -
'abc'.upper()
>>>'ABC'
#把字母变成大写
'ABC'.lower()
>>>'abc'
#把字母变成小写
查看全部 -
# 参考网页 https://www.cnblogs.com/mylu/p/11028556.html
查看全部 -
反反复复付付付付付
查看全部 -
math包提供了求平方根的函数sqrt()
需要先引用它
import math
math.sqrt()
查看全部 -
#解法二 参考网页 https://www.cnblogs.com/yssjun/p/9887239.html def count(): fs = [] for i in range(1,4): func = lambda _i = i : _i * _i fs.append(func) return fs f1, f2, f3 = count() print(f1(), f2(), f3())
查看全部 -
函数式编程的特点
把计算视为函数而非指令
纯函数式编程:不需要变量,没有副作用,测试简单
支持高阶函数,代码简洁。
python支持的函数式编程
不是纯函数式编程:允许有变量
支持高阶函数:函数也可以作为变量传入
支持闭包:有了闭包就能返回函数
有限度地支持匿名函数。
查看全部 -
高阶函数:能接受函数做参数的函数
变量可以指向函数
函数名其实就是指向函数的变量
一个函数可以接收另一个函数作为参数
能接收函数作参数的函数就是高阶函数
查看全部 -
def calc_prod(lst): def prod(): z=1 for i in lst: z=z*i return z return prod f=calc_prod([1, 2, 3, 4]) print(f) # 仅仅返回函数。 或在命令窗口输入f;或不用f,直接输入calc_prod([1, 2, 3, 4]) print(f())# 调用函数,返回函数计算结果. 或在命令窗口输入f(),但需借用f才可输出计算结果。
查看全部 -
%取余
math.sqrt(x)%1==0 对x开根号取余数进行比较
查看全部 -
str = 'runoob' # 把所有字符中的小写字母转换成大写字母 print(str.upper()) # 把所有字符中的大写字母转换成小写字母 print(str.lower())
Python capitalize()将字符串的第一个字母变成大写,其他字母变小写。对于 8 位字节编码需要根据本地环境。
查看全部 -
开根号函数 math.sqrt()
查看全部 -
#错误案例 def cmp_ignore_case(s1, s2): if s1[0] > v2[0]: # 两个字符串比较大小,自动按照首字母比较,不需再取首字母 return -1 if s1[0] < v2[0]: # 此if语句是逆序排序,顺序排序需调整 return 1 return 0 print sorted(['bob', 'about', 'Zoo', 'Credit'], cmp_ignore_case)
查看全部
举报