''' 1.__slots__是什么:是一个类变量,变量值可以是列表,元祖,或者可迭代对象,也可以是一个字符串(意味着所有实例只有一个数据属性) 2.引子:使用点来访问属性本质就是在访问类或者对象的__dict__属性字典(类的字典是共享的,而每个实例的是独立的) 3.为何使用__slots__:字典会占用大量内存,如果你有一个属性很少的类,但是有很多实例,为了节省内存可以使用__slots__取代实例的__dict__ 当你定义__slots__后,__slots__就会为实例使用一种更加紧凑…
数据类型 不可变数据(四个):Number(数字).String(字符串).Tuple(元组).Sets(集合):可哈希 可变数据(两个):List(列表).Dictionary(字典).不可哈希 字符串,列表,元祖的索引与切片 索引:例如 str='abcdefg' str[0]='a' str[-1]='g' 切片:例如 str='abcdefg' str[0:4]='abcd' #切片:顾首不顾尾 str[:-1]='abcdef' str[:]='abcdefg' str[::2]='a…
python解释器示例 >>> import uuid >>> uuid.uuid1() UUID('ae6822e6-c976-11e6-82e0-0090f5f61084') >>> uuid.uuid1() UUID('af72c0a2-c976-11e6-b69e-0090f5f61084') >>> uuid.uuid1() UUID('afd03ab6-c976-11e6-8475-0090f5f61084') >&…
1 * 重复输出字符串 print('helo '*4) 2 [],[:] 通过索引获取字符串中的字符,这里和列表中的切片操作是相同的,具体内容见列表 print('hello word'[2:]) 3 in 成员运算符 - 如果字符串中包含指定的字符返回True print('el' in 'hello') 4 格式字符串 print('%s is a super hero'%'lron man') 5 + 字符串拼接 a,b,c = 'one','two','three' print(a+b…
类的常用魔术方法:无需人为调用,基本是在特定的时刻自动触发,方法名被前后两个下划线包裹 魔术方法,总结表: __init__:构造函数.初始化的时候调用. __new__:对象实例化方法,其实这才是类里面第一个被调用的方法,在构造函数之前调用,之后才是__init__,只是这个比较特殊,一般不使用. __call__:对象当函数的时候触发. class A(): def __init__(self,name = 0): print("哈哈,我是构造函数") def __call__(s…
如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问 __private_attrs:两个下划线,声明该属性为私有,不能在类的外部被使用或直接访问.在类内部的方法中使用:self.__private_attrs class Info(object): def __init__(self): self.__name = "xiaoming" #私有变量 de…
索引和切片: 索引:取出数组s中第3个元素:x=s[2] 切片:用极少的代码将数组元素按需处理的一种方法.切片最少有1个参数,最多有3个参数,演示如下: 我们假设下面所用的数组声明为array=[2,3,4,5,6] 1个参数: array[1:]——从下标为1的元素选择到最后一个元素,返回 [4,5,6] array[:3]——从下标为0的元素选择到下标为2的元素,不包括下标3的元素,返回[2,3,4] array[::2]——从下标为0的元素开始,最后一个%2为0的下标对应的那个元素为止 说…
首先,方法仅仅是类内部定义的函数,也就是说,方法是类属性而不是实例属性. 其次方法有两种被调用的方式:调用绑定的方法和调用未绑定的方法. 当存在一个实例时,方法才被认为绑定到了那个实例上,没有实例时方法就是未绑定的. 这也是为什么每一个方法的第一个参数都是变量self,它表示调用此方法的实例对象.self就是用于在类实例方法中引用方法所绑定的实例. 方法,不管绑定与否,都是由相同的代码组成的,唯一的不同之处在于是否存在一个实例可以调用此方法. 调用绑定方法 在每一个方法的参数列表中,第一个参数都…
数字: #二进制转十进制 a=' v=int(a,base=2) print(v) 进制转换 #当前数字的二进制至少有多少位 b=2 v2=b.bit_length() print(v2) 数值二进制表示位数 字符串: #首字母大写 a="kelvin" v=a.capitalize() print(v) 首字母大写 #终极无敌'大写'变'小写'---->casefold b="KELVIN" v1=b.casefold() v2=b.lower() prin…
不同的代码段采用不同的命名长度.通常来说,循环计数器(loop counters)采用1位的单字符来命名,循环判断变量(condition/loop variables)采用1个单词来命名,方法采用1-2个单词命名,类采用2-3个单词命名,全局变量采用3-4个单词命名. 对变量采用具体的命名(specific names)方式,”value”, “equals”, “data”在任何情况下都不是一种有效的命名方式. 采用有意义的命名(meaningful names).变量的名字必须准确反映它的…