ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

类的特殊属性

2021-01-05 21:34:33  阅读:189  来源: 互联网

标签:__ .__ name 特殊 print slots class 属性


目录


__doc__

类名.__doc__时触发执行,查看类的注释信息,注释信息无法继承。

class Person:
    """
    该类注释信息
    """
    
print(Person.__doc__)
该类注释信息

直接写注释信息相当于定义了个__doc__ = """该类的注释信息""",所以可以不用写pass,语法也是正确的。


__name__

类名.__name__时触发执行,返回类名。

class A:
    pass

a = A()
print(type(a).__name__)
A

__module__

对象.__module__时触发执行,返回对象所在的模块名。

class A:
    pass

a = A()
print(A.__module__)
__main__  # 表示当前文件

__class__

仅新式类中,对象.__class__时触发执行,返回对象所属的类。与type()所得到的结果相同。

class A:
    pass

a = A()
print(A.__class__)
print(a.__class__)
print(type(a))
<class 'type'>
<class '__main__.A'>
<class '__main__.A'>

__slots__

slots是一个类变量,变量值可以是列表,元祖,或者可迭代对象,也可以是一个字符串(意味着所有实例只有一个数据属性)。
使用点来访问属性本质就是在访问类或者对象的dict属性字典(类的字典是共享的,而每个实例的是独立的)。

class People:
    __slots__ = ['name','age']

    def __init__(self,name,age):
        self.name = name
        self.age = age


p = People('libai',18,)


# p.sex = 'male'  对象不能再定义独自的属性
# print(p.__dict__)  使用了slots,对象就没有__dict__
print(p.__slots__)  # 可以查看类的__slots__属性.

__slots__的作用:

  • 1、限制对象的属性。
  • 2、当实例很多,但属性很少,使用slots能节省内存。

类每生成一个对象,对象有自己的dict,如果对象自身有很多属性,(对象越多)这样占用的内存空间就很多,使用了slots后,所有的对象,都使用类名称空间中的属性,对象越多,越节省内存。


#python为类内置的特殊属性
类名.__name__ # 类的名字(字符串)
类名.__base__ # 类的第一个父类
类名.__bases__ # 类所有父类构成的元组,仅查看直接父类。
类名.__dict__ # 类的属性字典

参考文档:

https://docs.python.org/zh-cn/3/reference/datamodel.html?highlight=eq#object.eq

标签:__,.__,name,特殊,print,slots,class,属性
来源: https://www.cnblogs.com/ChiRou/p/14238104.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有