首页 > 编程语言 >Python疑点

Python疑点

时间:2023-03-14 09:25:04浏览次数:47  
标签:__ 调用 Python self repr 疑点 print 方法

一、魔法方法

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

相关文章