美文网首页Python随笔-生活工作点滴Python编程
Python技术分享—特殊成员和魔法方法

Python技术分享—特殊成员和魔法方法

作者: FQ_5ab3 | 来源:发表于2019-07-08 14:13 被阅读13次

特殊成员和魔法方法

Python中有大量类似doc这种以双下划线开头和结尾的特殊成员及“魔法方法”,它们有着非常重要的地位和作用,也是Python语言独具特色的语法之一!

Python技术分享—特殊成员和魔法方法
__init__ : 构造函数,在生成对象时调用
__del__ : 析构函数,释放对象时使用
__repr__ : 打印,转换
__setitem__ : 按照索引赋值
__getitem__: 按照索引获取值
__len__: 获得长度
__cmp__: 比较运算
__call__: 调用
__add__: 加运算
__sub__: 减运算
__mul__: 乘运算
__div__: 除运算
__mod__: 求余运算
__pow__: 幂

doc

class Foo:
 """ 测试 """
 def func(self):
 pass
# 打印类的说明文档 
print(Foo.__doc__)
测试

init()

实例化方法,通过类创建实例时,自动触发执行。

class Foo:
 def __init__(self, name):
 self.name = name
obj = Foo(jack') # 自动执行类中的 __init__ 方法

del()

析构方法,当对象在内存中被释放时,自动触发此方法。

注:此方法一般无须自定义,因为Python自带内存分配和释放机制,除非你需要在释放的时候指定做一些动作。析构函数的调用是由解释器在进行垃圾回收时自动触发执行的。

class Foo:
 def __del__(self):
 print("我被回收了!")

obj = Foo()
obj1 = obj
del obj
del obj1
print("========================")

call()

如果为一个类编写了该方法,那么在该类的实例后面加括号,可会调用这个方法。

注:构造方法的执行是由类加括号执行的,即:对象 = 类名(),而对于call() 方法,是由对象后加括号触发的,即:对象() 或者 类()()

class Foo:
 def __init__(self):
 pass
 def __call__(self, *args, **kwargs):
 print('__call__')
obj = Foo() # 执行 __init__
obj() # 执行 __call__

dict

列出类或对象中的所有成员!非常重要和有用的一个属性。

class Province:
 country = 'China'
 def __init__(self, name, count):
 self.name = name
 self.count = count
 def func(self, *args, **kwargs):
 print('func')
# 获取类的成员
print(Province.__dict__)

new()

new() 方法是在类准备将自身实例化时调用

class Dog(object):
 def __init__(self):
 print("init方法")

 def __new__(cls):
 print(id(cls))
 print("new方法")
 return object.__new__(cls)
print(id(Dog))
g = Dog()
1 调用__new__方法来创建一个对象 然后返回这个对象的引用
2 调用__init__方法 把返回值传进去
3 返回对象的引用

(写在最后,由于以后每天晚上九点半之后会更新Python基础的知识点,记得来看哦!)

推荐阅读:

改变世界到语言—python,看完才知道从事python凭什么高薪!(2019年最新三大方向资源)

相关文章

  • Python技术分享—特殊成员和魔法方法

    特殊成员和魔法方法 Python中有大量类似doc这种以双下划线开头和结尾的特殊成员及“魔法方法”,它们有着非常重...

  • 32-特殊成员和魔法方法

    特殊成员和魔法方法 Python中有大量类似__doc__这种以双下划线开头和结尾的特殊成员及“魔法方法”,它们有...

  • Python 的特殊成员和魔法方法

    Python中有大量类似doc这种以双下划线开头和结尾的特殊成员及“魔法方法”,它们有着非常重要的地位和作用,也是...

  • 特殊成员和魔法方法(42)

    Python中有大量类似doc这种以双下划线开头和结尾的特殊成员及“魔法方法”,它们有着非常重要的地位和作用,也是...

  • python中的__init__()和__new__()的区别

    前言  用双下划线包围的特殊方法在python中被称为魔法方法,这里介绍python中的__init __和 _...

  • Python10--类中的魔法方法

    1.类中的特殊方法(魔法方法) 在 Python 中有一些特殊的方法,它们是 Python 内置的方法,通常以双下...

  • PYTHON部分基础D5

    魔法方法以双下划线开头和结尾的特殊成员及“魔法方法”,有些是方法,调用时要加括号,有些是属性,调用时不需要加括号 ...

  • 序章

    目标:系统全面学习python高级知识和并发编程方法:功能-> 原理 -> 应用案例技术:面向对象、魔法方法、元类...

  • Python--魔法方法学习

    1、什么叫魔法方法? 魔法方法:Python解释器自动给出默认的,是可以给你的类增加魔力的特殊方法。如果你的对象实...

  • Python类中的特殊成员

    Python类中的特殊成员 Python Version: 3.5+ init构造方法,每个对象被实例化出来的时候...

网友评论

    本文标题:Python技术分享—特殊成员和魔法方法

    本文链接:https://www.haomeiwen.com/subject/qbmohctx.html