一、魔法方法
1.定义
使用 __ 开始,使用 __ 结束
在创建对象时,会自动调用__init__方法
在销毁对象时,会自动调用__del__方法
当打印一个对象的时候,会调用这个对象的 __str__ 或者 __repr__ 方法,如果两个方法都写了,选择 __str__
调用内置函数 repr 会触发对象的 __repr__ 方法
对象名() ==> 调用这个对象的 p.__call__() 方法
1 # 魔法方法,也叫魔术方法,是内里的特殊的一些方法 2 # 特点: 3 # 1.不需要手动调用,会在合适的时机自动调用 4 # 2. 这些方法,都是使用 __ 开始,使用 __ 结束 5 # 3. 方法名都是系统规定好的,在合适的时机自己调用 6 # import datetime 7 # 8 # x = datetime.datetime(2020, 2, 24, 16, 17, 45, 200) 9 # print(x) # __str__ 方法 10 # print(repr(x)) # __repr__ 方法 11 12 13 class Person(object): 14 def __init__(self, name, age): 15 # 在创建对象时,会自动调用这个方法 16 print('__init__方法被调用了') 17 self.name = name 18 self.age = age 19 20 def __del__(self): 21 # 当对象被销毁时,会自动调用这个方法 22 print('__del__ 方法被调用了') 23 24 def __repr__(self): 25 return 'hello' 26 27 def __str__(self): 28 return '姓名:{},年龄:{}'.format(self.name, self.age) 29 30 def __call__(self, *args, **kwargs): 31 # print('__call__ 方法被调用了') 32 # args = (1, 2, 4, 5),kwargs = {'m':'good', 'n':'hehehe', 'p':'heiheihei'} 33 print('args={},kwargs={}'.format(args, kwargs)) 34 35 36 p = Person('zhangsan', 18) 37 38 # 如果不做任何的修改,直接打印一个对象,是文件的 __name__.类型 内存地址 39 # print(p) # <__main__.Person object at 0x00000217467AEA08> 40 41 # 当打印一个对象的时候,会调用这个对象的 __str__ 或者 __repr__ 方法 42 # 如果两个方法都写了,选择 __str__ 43 print(p) 44 45 # print(repr(p)) # 调用内置函数 repr 会触发对象的 __repr__ 方法 46 # print(p.__repr__()) # 魔法方法,一般不手动的调用 47 48 p(1, 2, 4, 5, m='good', n='hehehe', p='heiheihei') # 对象名() ==> 调用这个对象的 p.__call__() 方法
标签:__,调用,Python,self,repr,疑点,print,方法 From: https://www.cnblogs.com/dxtx/p/17213679.html