python 类的预置属性
1、__dict__ 属性
绑定一个存储此实例自身变量的字典。
2、__class__ 属性
属性用于绑定创建些实例的类。
可以借助于此属性来访问创建此实例的类。
3、__doc__属性
绑定类的文档字符串
4、__slots__ 列表
限定一个类创建的实例只能有固定的属性(实例变量)
不允许对象添加列表以外的属性(实例变量)
防止用户因错写属性的名称而发生程序错误
说明:
1. __slots__列表绑定一个字符串列表
2. 含有__slots__列表的类所创建的实例对象没有__dict__属性,即此实例不用字典来存储对象的属性(实例变量)
In [115]: # 此示例示意 类内的__slots__列表的用法?
...: class Human:
...: # 以下列表限制此类的对象只能有'name' 和'age' 属性
...: __slots__ = ['name', 'age']
...:
...: def __init__(self, name, age):
...: self.name, self.age = name, age
...:
...:
...: h1 = Human("Beijing", 15)
...:
...: print(h1.age) # 15
...: #h1.Age = 18 # 出错,h1对象没有Age属性,也不允许有Age属性
...: print(h1.age) # 15
15
15
In [116]: # 此示例示意 类内的__slots__列表的用法?
...: class Human:
...: # 以下列表限制此类的对象只能有'name' 和'age' 属性
...: __slots__ = ['name', 'age']
...:
...: def __init__(self, name, age):
...: self.name, self.age = name, age
...:
...:
...: h1 = Human("Beijing", 15)
...:
...: print(h1.age) # 15
...: h1.Age = 18 # 出错,h1对象没有Age属性,也不允许有Age属性
...: print(h1.age) # 15
15
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-116-717d8bd37f65> in <module>
11
12 print(h1.age) # 15
---> 13 h1.Age = 18 # 出错,h1对象没有Age属性,也不允许有Age属性
14 print(h1.age) # 15
AttributeError: 'Human' object has no attribute 'Age'
In [117]: # 此示例示意 类内的__slots__列表的用法?
...: class Human:
...: # 以下列表限制此类的对象只能有'name' 和'age' 属性
...: #__slots__ = ['name', 'age']
...:
...: def __init__(self, name, age):
...: self.name, self.age = name, age
...:
...:
...: h1 = Human("Beijing", 15)
...:
...: print(h1.age) # 15
...: h1.Age = 18 # 出错,h1对象没有Age属性,也不允许有Age属性
...: print(h1.age) # 15
15
15
5、类的__base__属性
__base__属性用来记录此类的基类