2018-07-16-Python全栈开发day27-面向对象进阶-part2

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

  

猜你喜欢

转载自www.cnblogs.com/hai125698/p/9320715.html
今日推荐