python魔法属性_python类或对象中的魔法属性

对于一个类,python定义了许多可用的魔法属性,有些每个类都默认存在,有些需要用户手动定义。

__doc__:类的文档信息,类的第一个逻辑行的字符串

__name__:获取类的名称,只能使用Class.__name__,对象没有该属性

__module__:类或者对象的所属的类所在模块

__dict__:返回类的所有属性和属性值组成的字典,不包括继承来的属性和方法。

__class__:获取实例对象的类(object.__class__),显示内容类似,使用类直接获取该属性ClassName.__class__,显示内容

__bases__:获取指定类的所有直接父类(父类的父类不显示)组成的元组,使用方法为类名.__bases__

__mro__:显示指定类的所有父类继承脉络和继承顺序,假如这个指定的类不具有某些方法和属性,但与其有血统关系的类中具有这些属性和方法,则在访问这个类本身不具有的这些方法和属性时,会按照__mro__显示出来的顺序一层一层向后查找,直到找到为止。

__slots__:限制实例对象添加新的属性,但是对类不起作用,slots__=tuple(使用一个元组传入所有允许新增的属性名),不得在类中定义元组中已有的同名的属性和方法。

__all__:将一个py文件作为模块导入时,某些方法可能只是用来做测试用的,不希望也不建议被导入,可以用__all__=['函数名或方法名']的方式限制哪些函数或方法可以被导入,即[]中的函数名或方法名可以被导入。但是需要强调的是,__all__魔法方法只针对通过from xx import *这种导入方式有效。

class A:

'''这是一个用来做XX的类

这句话是类说明信息

'''

__slots__=('a','b','d','f')

__all__=['set','get']

a=1

def __init__(self,b):

self.b=b

self.c=3

class B(A):

pass

class C:

pass

class D(B,C):

pass

class E(D):

pass

a=A(2)

print(A.__dict__)

{'__module__': '__main__', '__doc__': '这是一个用来做XX的类\n这句话是类说明信息\n ', '__slots__': ('b', 'c', 'd', 'f'), '__all__': ['set', 'get'], 'a': 1, '__init__': , 'b': , 'c': , 'd': , 'f': }

print(a.__class__)

print(D.__bases__)

(, )

print(D.__mro__)

(, , , , )

最后编辑:2019-04-03作者:qingheluo

be51fb116a4da7c73e5e89a63655c6bd?s=96&d=mm&r=g

这个作者貌似有点懒,什么都没有留下。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值