魔法属性:

首先,我们先谈一谈什么叫做魔法属性?
魔法属性和方法是Python内置的一些属性和方法,有着特殊的含义。命名时前后加上两个下划线,在执行系统特定操作时,会自动调用。
那么接下来,我们就列举一些常见的魔法属性和方法。

1._init_:

初始化方法,在创建类对象的时候,会自动执行方法

class Student(object):def __init__(self,name,age):self.name=nameself.age=agedef haha(self):print(self.name)print(self.age)stu=Student("蛋蛋",18)  #  ----->自动执行__init__ 方法
print(stu.haha())

2._str_:

在输出打印 对象 时,默认输出该方法的返回值。

class Student(object):def __str__(self):return  "你好可爱啊?" stu=Student()
print(stu)      #  ----->自动执行__str__方法,输出,你好可爱啊

3._del_:

当对象不使用了,在内存中销毁时,自动执行该方法
注:改操作通常是Python的解释器在进行垃圾回收,释放内存时自动完成。

class Student(object):def __del__(self): # ---->一般情况下,无需定义pass

4._doc_:

把类和方法的一些注释描述信息,打印出来

class Student(object):''' 这是我定义的一个hahah方法,你看见没啊'''def hahah(self):passstu=Student()
print(stu.__doc__)  #---->输出: 这是我定义的一个hahah方法,你看见没啊

5._call_:

当在对象后面加上(),会自动执行该方法
注:_init__方法的执行是由创建对象触发的,即:对象 = 类名() ;而对于 _call 方法的执行是由对象后加括号触发的,即:对象() 或者 类()()

class Student(object):def __init__(self):passdef __call__(self, *args, **kwargs):print('这是call方法啊')stu=Student()
stu()       #   ---->加上()后,会自动执行实例化对象的方法 输出:这是call方法啊

6._dict_:

列出类或对象中所有属性

class Student(object):gender='男'def __init__(self,name,age):self.name=nameself.age=agedef fun(self, *args, **kwargs):print('这是fun')#print(Student.__dict__)
stu=Student('老王',19)
print(stu.__dict__)

看看输出结果:

{'name': '老王', 'age': 19}

7._module_:

表示当前操作的对象在那个模块

class Student(object):def __init__(self,name,age):self.name=nameself.age=agedef fun(self, *args, **kwargs):print('这是fun')stu=Student('老王',19)
print(stu.__module__)   #----->    输出__main__

8._class_:

表示当前操作的对象的类是什么

class Student(object):def __init__(self,name,age):self.name=nameself.age=agedef fun(self, *args, **kwargs):print('这是fun')stu=Student('老王',19)
print(stu.__class__)    #输出-----》<class '__main__.Student'>

9._getitem_、setitemdelitem:

用于索引操作,如字典。以上分别表示获取、设置、删除数据

class Student(object):def __getitem__(self, key):print('__getitem__', key)def __setitem__(self, key, value):print('__setitem__', key, value)def __delitem__(self, key):print('__delitem__', key)stu =Student()result = stu['k1']      # 自动触发执行 __getitem__
stu['k2'] = '伙计'    # 自动触发执行 __setitem__
del stu['k1']           # 自动触发执行 __delitem__

输出结果:

__getitem__ k1
__setitem__ k2 伙计
__delitem__ k1

参考文献:
python中的魔法方法及属性

python中的魔法属性和方法相关推荐

  1. Python中的魔法属性

    魔法属性 在Python中,所有以 __ 双下划线包起来的方法,都统称为 Magic Method,例如类的初始化方法 __init__() ,实例对象创造方法 __new__()等. 魔法属性和方法 ...

  2. Python中的特殊属性与方法

    模块的特殊属性 __doc__ 模块的说明文档 __all__ 指明模块希望被使用的属性.类和方法 __file__ 模块所在路径 类的特殊属性 __slots__ 限制类的实例允许添加的属性,是一个 ...

  3. python私有属性怎么定义_Python中定义私有属性的方法是()。

    [判断题]请假条带有请求的性质,所以一般来说篇幅要尽量长一些,以示郑重;更多要用煽情性语句,以打动对方.( ) [单选题]关于类和对象的关系,下列描述正确的是(). [选择]Трудоспособны ...

  4. Python的类和对象的介绍,定义类和对象,定义实例方法和属性以及Python中的魔法方法

    Day09新手小白学python 第九节 Python的类和对象的介绍,定义类和对象,定义实例方法和属性以及Python中的魔法方法 目录 Day09新手小白学python 前言 一.面向对象介绍 二 ...

  5. python深度讲解_《深度剖析CPython解释器》21. Python类机制的深度解析(第五部分): 全方位介绍Python中的魔法方法,一网打尽...

    楔子 下面我们来看一下Python中的魔法方法,我们知道Python将操作符都抽象成了一个魔法方法(magic method),实例对象进行操作时,实际上会调用魔法方法.也正因为如此,numpy才得以 ...

  6. Python高级——魔法属性和方法

    魔法属性和方法 1.__doc__:表示类的描述信息 2.__module__和__class__:当前操作对象所属的模块和类 3.__init__:初始化方法,类创建对象时,自动触发执行 4.__d ...

  7. python中属于私有属性的是_Python中的实例属性和私有属性

    相关知识点 实例属性 实例属性和类属性的区别在于实例属性定义在类的__init__()魔法方法中,而类属性定义在类下: 1 classC:2 b = 1 #类属性 3 4 def __init__(s ...

  8. (Python高级编程)第二章:Python中的魔法函数

    文章目录 一:什么是魔法函数 (1)魔法函数 (2)作用 二:Python中的魔法函数 (1)字符串表示 (2)集合序列相关 (3)迭代相关- (4)可调用 (5)with上下文管理器 (6)数制转换 ...

  9. 关于python中requests模块导入问题-python中requests模块的使用方法

    本文实例讲述了python中requests模块的使用方法.分享给大家供大家参考.具体分析如下: 在HTTP相关处理中使用python是不必要的麻烦,这包括urllib2模块以巨大的复杂性代价获取综合 ...

最新文章

  1. 彻底卸载 RAD Studio 2009/2010/XE+ 的步骤
  2. jdbc excute方法理解的误区
  3. C++ floor、ceil、round函数的区别
  4. 呆萌的图模型学习——基本概念(一)
  5. javascript Array对象基础
  6. 记录——《C Primer Plus (第五版)》第十章编程练习第三题
  7. bzoj 1193: [HNOI2006]马步距离(贪心+BFS)
  8. 图像的缩放,旋转,转置和镜像
  9. 简单的Qt倒计时程序--番茄钟
  10. 一个500人天的BI项目实施记录
  11. thinkpad重装系统步骤
  12. java计算机毕业设计交通事故档案管理系统源程序+mysql+系统+lw文档+远程调试
  13. 罗格斯大学电气与计算机工程专业怎么样,罗格斯大学计算机工程排行,千万得细心点听懂...
  14. 【Windows Server 2019】路由服务的配置和管理
  15. java 307跳转_GitHub - yy307/java-weixinlib: 微信公众平台接入
  16. log4j配置详解(非常详细转载)
  17. 利达主机如何注册设备_利达主机操作说明
  18. weiphp2.0:关于OneThink后台添加密码重置的功能
  19. 【Vue】- created()方法
  20. 排名第一的亚马逊关键词工具

热门文章

  1. 高级concurrent包
  2. matlab plot subplot,Matlab使用subplot合并子图
  3. 解决 IntelliJ IDEA 中 .propertise 文件保存后中文乱码
  4. lambda 表达式中的 this 与普通情况下的 this 指向
  5. STM32 F101系列的程序怎么转化为STM F103出现编译错误!
  6. Trustdata:映客直播站稳行业第一梯队 用户粘性增长明显
  7. 数据中心里的应急关机技术
  8. Arduino开发板制作
  9. Jmeter(7)调试工具---HTTP Mirror Server
  10. jquery 实现返回顶部功能