• py10_Python 调用方法总结以及魔术方法和内部类


    ##################################################

    目录

    活动简介

    Python 魔术方法

    魔术方法

    Python 各类调用方法总结

    普通方法调用方式

    魔术方法调用方式

    类方法调用方式

    静态方法调用方式

    各类方法内调用

    普通方法内可调用

    静态方法内可调用

    类方法内可调用

    Python 内部类

    内部类


    ##################################################

    活动简介

    活动地址:CSDN21天学习挑战赛

    学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰;一个人摸索学习很难坚持,想组团高效学习;想写博客但无从下手,急需写作干货注入能量;热爱写作,愿意让自己成为更好的人…

    欢迎参与CSDN学习挑战赛,成为更好的自己,请参考活动中各位优质专栏博主的免费高质量专栏资源(这部分优质资源是活动限时免费开放喔~),按照自身的学习领域和学习进度学习并记录自己的学习过程,或者按照自己的理解发布专栏学习作品!

    ##################################################

    Python 魔术方法

    ——————————

    魔术方法

            在 Python 语言中 所有以双下划线 __ 包起来的方法都统称为 魔术方法

            这些方法在实例化时会自动调用!

            例如

    __str__()
    __init__()
    __del__()

            等等

            使用魔术方法可以构造出非常优美的代码

            比如

    将复杂的逻辑封装成简单的 API

            等!

    1. 魔术方法中的
    2. __init__()
    3. 一般叫做构造函数 用于初始化类的内部状态和参数
    4. 如果程序员不提供 会給出一个默认的 __init__()
    5. __ del __()
    6. 函数叫做析构函数
    7. 用于释放对象占用的资源
    8. __del__() 函数是可选的
    9. 如果不提供 会在后台提供默认析构函数
    10. 魔术方法中有些可以实现属性访问控制的功能
    11. 例如
    12. __getattr__(self,name)
    13. __setattr__(self,name,value)
    14. 方法等

            示例魔术方法:

    1. >>> class A:
    2. ... str = "语言"
    3. ... def __init__ ( self, i = "中文" ):
    4. ... self.str = i
    5. ... print ( "构造函数 >>> ", self.str ) # 重写构造函数
    6. ... def __del__ (self):
    7. ... print ( "析构函数 >>> ", self.str ) # 重写析构函数
    8. ...
    9. >>> a = A() # 实例化对象 自动调用构造函数
    10. 构造函数 >>> 中文
    11. >>> b = A ( "英文" ) # 实例化对象 传参重写构造函数
    12. 构造函数 >>> 英文
    13. >>> a.__del__() # 调用析构函数
    14. 析构函数 >>> 中文
    15. >>>

            对于这些魔术方法 在创建对象时可以自动执行
            当对象自动执行析构函数后 对象仍然存在
            但是在 del 对象后 对象就已经被回收删除 无法再次使用:

    1. >>> del a # 删除对象 a
    2. 析构函数 >>> 中文
    3. >>> print(a) # 报错 因为 del 后对象就不存在了
    4. Traceback (most recent call last):
    5. File "", line 1, in
    6. NameError: name 'a' is not defined. Did you mean: 'A'?
    7. >>>

    ##################################################

    Python 各类调用方法总结

    ——————————

    普通方法调用方式

            普通方法与一般函数的定义的不同在第一个参数是 self 指代的意思是指向实例对象本身

            类方法调用必须要借助对象

            所以普通方法的调用方式为:

    对象.方法名()

            不能直接用

    类名.方法名()

            类中的方法第一个参数是 self 代表的是实例对象本身 因此类是不能直接调用普通方法的!!!

    ——————————

    魔术方法调用方式

            前面普通方法是需要

    对象名.方法名()

            去调用 而魔术方法比较特殊 是在特殊时刻自动触发 即不需要调用

            常见魔术方法:

    1. __init__() 对象创建时自动调用的方法
    2. __str__() 函数有返回值 当打印对象名的时候自动调用
    3. __del__() 当删除引用时自动调用
    4. __call__() 当执行 对象名() 时自动调用 即把对象当成函数使用

    ——————————

    类方法调用方式

            类方法特点:

    类方法中不能调用普通方法

            类方法调用:

    1. 对象名.方法名()
    2. 类名.方法名()

    ——————————

    静态方法调用方式

            静态方法主要是用来存放逻辑性的代码

            逻辑上她是属于类 但是和类本身没有关系!

            也就是说在静态方法中不会涉及到类中的属性和方法的操作

            可以理解为:

    静态方法是个独立的单纯的函数仅仅托管于某个类的名称空间中以便于使用和维护

            静态方法调用:

    1. 对象名.静态方法名()
    2. 类名.静态方法名()

    ——————————

    各类方法内调用

    %%%%%

    普通方法内可调用

            普通方法:

    可调用普通方法 使用 self.方法名()

    可调用静态方法 使用 类名.方法名()
    可调用类方法 使用 类名.类名.方法名()

    %%%%%

    静态方法内可调用

            静态方法:

    不可调用普通方法
    可调用类方法 方式为 类名.方法名()
    可调用静态方法 方式为 类名.方法名()

    %%%%%

    类方法内可调用

            类方法:

    不可调用普通方法
    可调用类方法 使用 类名.方法名() 方式
    可调用静态方法 使用 类名.方法名() 方式

    ##################################################

    Python 内部类

    ——————————

    内部类

            内部类:

    内部类是在类的内部定义的类

            主要是为了更好的抽象现实世界!

    一般情况下不使用内部类 这样会使程序结构复杂
    但是理解内部类有助于理解模块的调用

            调用内部类有两种方式:

    直接使用外部类调用内部类
    或者先对外部类进行实例化 然后再实例化内部类

            示例创建内部类:

    1. Microsoft Windows [版本 6.3.9600]
    2. (c) 2013 Microsoft Corporation。保留所有权利。
    3. C:\Users\byme>python
    4. Python 3.10.5 (tags/v3.10.5:f377153, Jun 6 2022, 16:14:13) [MSC v.1929 64 bit (AMD64)] on win32
    5. Type "help", "copyright", "credits" or "license" for more information.
    6. >>> class A:
    7. ... i = 0
    8. ... class a():
    9. ... i = 1
    10. ... class b:
    11. ... i = 2
    12. ...
    13. >>> A_1 = A()
    14. >>> print(A_1.i)
    15. 0
    16. >>>

            上面例子中在 A 类中又定义了 a 类和 b 类两个内部类:

    1. class A:
    2. i = 0
    3. class a():
    4. i = 1
    5. class b:
    6. i = 2

            然后创建了外部类 A 的实例化对象

    A_1 = A()

            该实例对象的 i 值为 0

            创建内部类的实例化对象 可以通过外部类的实例化对象调用内部类完成:

    1. >>> A_2 = A_1.a()
    2. >>> print ( A_2.i )
    3. 1
    4. >>>

            也可以直接使用外部类名调用内部类

    1. >>> A_3 = A.b()
    2. >>> print (A_3.i)
    3. 2
    4. >>>

  • 相关阅读:
    代码随想录二刷 Day21
    docker安装RabbitMQ和延时插件
    BBRv2 Cruise 阶段的 inflight 补偿
    【问题思考总结】CPU怎么访问磁盘?CPU只有32位,最多只能访问4GB的空间吗?
    Centos搭建socks5代理服务器
    深入理解函数式编程(上)
    Lec09 Interrupts | 中断
    【最新面试问题记录持续更新,java,kotlin,android,flutter】
    五大优化技巧,让你的视频直播app源码更加流畅
    理想滤波器、巴特沃斯滤波器、高斯滤波器实现(包含低通与高通,代码实现与分析)
  • 原文地址:https://blog.csdn.net/m0_67268286/article/details/126277639