概述
python类中有一些内置类属性,新建类后,python会自动创建这些类属性
查看类属性
通过 dir() 函数查看类属性,如下代码:
class Phone:
pass
iphone=Phone()
iphone.name='iphoneX'
iphone.cpu='A11'
print(dir(Phone))
__dict__
类或实例的属性(返回dict数据,由类或实例的属性组成)
#接上面的代码
#查看类属性
print(Phone.__dict__)
#查看实例属性
print(iphone.__dict__)
结果
{'__module__': '__main__', '__init__': <function Phone.__init__ at 0x03121B28>,
'__dict__': <attribute '__dict__' of 'Phone' objects>, '__weakref__': <attribute
'__weakref__' of 'Phone' objects>, '__doc__': None}
{'name': 'iphoneX', 'cpu': 'A11'}
注意
对实例设置属性,其实就是在对实例的__dict__属性设置key-value值
iphone.__dict__['name']='iphoneXS'
print(iphone.name)
结果如下:
iphoneXS
__slots__
- 降低内存使用
- 不能对实例新增属性
- 实例没有(或者不允许访问)
__dict__属性
class Phone:
__slots__=['cpu']
iphone=Phone()
iphone.cpu='A11'
print(iphone.cpu)
#执行报错
iphone.name='iphone11'
print(iphone.name)
#执行报错
print(iphone.__dict__)
__doc__
类的文档字符串
class Phone:
'''手机类'''
def __init__(self,name=""):
"""
name:名称
"""
print("调用__init__()",",name=",name)
self.name=name
print(Phone.__doc__)
print(Phone.__init__.__doc__)
结果如下:
手机类
__name__
类有此属性,即:类名
实例没有此属性
print(Phone.__name__)
结果如下:
Phone
name:名称