Python——魔术方法

什么是魔术方法?

在Python中,所有以“__”(双下划线)包起来的方法,都统称为“Magic Method”,中文称『魔术方法』,例如类的初始化方法 __init__ 就是一个魔术方法。本篇文章将主要介绍几个常用的魔术方法的功能以及使用。

1.特殊属性

 Python中有几个比较容易理解的魔术方法,是类里面固有的几个特殊属性,总结如下表:

魔术方法名称

功能

__name__    

类、函数、方法等的名字

__module__ 

类定义所在的模块

__class__   

对象或类所属的类

__bases__ 

当前类的基类(父类)

__doc__   

类、函数的文档帮助,没有定义为None

__mro__    

Method Resolution Order 方法解析顺序 

__dict__   

类或实例的属性,可写的字典

下面编写一个简单的程序,看一下分别是怎么使用的:

from collections import Counter

class A(object):
    pass

class C(object):
    pass

class Date(A, C):
    """
    时间类的封装
    """
    country = 'China'
    def __init__(self, year, month, day):
        self.year = year
        self.month = month
        self.day = day

print(Date.__name__)

# 类定义所在的模块, 如果在当前脚本, 返回__main__, 否则, 返回真实的模块名eg: collections
print(Date.__module__)
print(Counter.__module__)

# 对象或类所属的类: 是由哪个类实例化出来的;
d = Date(2019, 10, 10)
print(d.__class__)  # d对象是由Date类实例化出来的;
print(Date.__class__)  # type(1)Date类是由type类实例化出来的;  Python中一切皆对象; 看到的类实质上也是对象;

# 当前类的基类(父类)
print(Date.__bases__)
print(A.__bases__)
print(object.__bases__)  # object没有父类;

# 类、函数的文档帮助,没有定义为None
print(Date.__doc__)

# Method Resolution Order 方法解析顺序, 实质上是显示类的继承顺序; python3中多继承的算法是广度优先
print(Date.__mro__)
# 类或实例的属性,可写的字典
print(Date.__dict__)

输出结果如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值