1.自定义format
所谓自定义format,就是对字符串中特定的需要插入的数据进行更改
例如:
1.1直接替代
a='{0}{0}{0}'.format('dag') print(a )#就是根据大括号内的数值进行替代 --- dagdagdag
1.2按顺序替代
a='{0}{2}{1}'.format('dag','cat','pig') print(a) --- dagpigcat
1.3 可以将对象导入到字符串中
class Test: def __init__(self,year,mon,day): self.year=year self.mon=mon self.day=day p1=Test(2016,12,31) a='{0.year}{0.mon}{0.day}'.format(p1) print(a) === 20161231
1.4format的调用方式
x.format(d1)===>d1.__format__(x)
2.slots属性
对于类属性来说,是有一个类属性字典的,可以对类属性字典就行修改,来改变类所具有的方法。
slots来代替类属性字典,在规定了属性之后,不能新添加属性
class Test: __slots__ = ['name','age','gender']#此时规定死了,最多只能有这三种属性 p1=Test p1.name='yehaibin' p1.age=18 p1.gender='male' print(p1.__dict__) print(Test.__dict__) === {'__module__': '__main__', '__slots__': ['name', 'age', 'gender'], 'age': 18, 'gender': 'male', 'name': 'yehaibin', '__doc__': None} {'__module__': '__main__', '__slots__': ['name', 'age', 'gender'], 'age': 18, 'gender': 'male', 'name': 'yehaibin', '__doc__': None}
#只能有这几个方法,不能进行添加,客观上起到了禁止修改的作用,很少用到,优点是省内存
3.析构方法__del__
析构方法:对象在内存中被释放的时候,会自动触发执行
#__del__ class Test: def __init__(self): pass def __del__(self): print('this is xigoufangfa') p1=Test() p1.name='18' print(p1) del p1.name print('111111') == <__main__.Test object at 0x0000020CAB02CD68> 111111 this is xigoufangfa#程序执行完之后,内存被释放,执行__del__方法
4.__call__方法
作用:执行带()的时候,会自动执行它的call方法
class Test: name='alex' def __init__(self): pass def __call__(self, *args, **kwargs): print('this is call way') p1=Test() p1() Test() == this is call way