cl_303303303 发表于 2015-11-30 12:47:07

Python属性、方法和类管理系列之

A __slots__:['name', 'city']  a __slots__:['name', 'city']
  #事实上,所有定义在__slots__中的属性都会放置在类的__dict__当中,即使没有使用的属性(city)也是如此。
  #而当实例需要取对象时,总是会先到类的__dict__中进行检查,如果类的__dict__中的属性是一个对象且该对象对属性的读取做了一些限制,那么就会直接影响到实例是否能够调用该属性。__slots__的工作原理是如此,后面介绍的描述符类亦是如此。
  #在类的__dict__中,也会存入__slots__属性。
  A __dict__:{'age': 22, '__init__': , 'name': , 'city': , '__slots__': ['name', 'city'], '__module__': '__main__', '__doc__': None}
  #当我们试图调用a.__dict__时,出现错误,因为该属性没有出现在__slots__中,所以禁止赋值或者访问。
  Traceback (most recent call last):
  File "a.py", line 10, in
  print('a __dict__: ', a.__dict__)
  AttributeError: 'A' object has no attribute '__dict__'
页: [1]
查看完整版本: Python属性、方法和类管理系列之