• Python学习笔记(十一)——面向对象二


    方法

    分类

     实例对象方法

    类方法的第一个参数一般为self,这种方法称为实例对象方法。实例对象方法对 类的某个给定的实例进行操作,通过self显式地访问该实例。

    定义

    def 方法名(self,[形参列表]):

           函数体

    调用

    对象.方法名([实参列表]) 

     

    私有方法

    在方法名字的前边加两个下划线,不可以直接访问!

    访问限制及方式:

    • 类/对象使用成员名访问

    • 类外/对象外不可以访问

    • 子类中不可以访问

    1. class Mess:
    2. def__send_msg(self): #私有方法
    3. print('----正在发送短信-----')
    4. def send_msg(self,new_money): #公有方法
    5. if new_money>=10:
    6. self.__send_msg()
    7. else:
    8. print('余额不足,请充值')
    9. mess = Mess()
    10. mess.__send_msg()
    11. Mess. __send_msg()
    12. #AttributeError: 'Mess' object has no attribute ' send_msg’
    13. #AttributeError: 'Mess' object has no attribute ' send_msg'

     

    静态方法

    定义

    Python允许声明与类的实例对象无关的方法,称之为静态方法;

    特性

    静态方法不对特定实例进行操作,不能使用实例对象的属性。

    使用修饰器@staticmethod来标识静态方法。

    格式

    class 类名:

             @staticmethod

             def 静态方法名([形参列表]):

            方法体

    调用静态的方法:

    • 对象名调用类方法
    • 类名调用类方法

    实例

    1. class test:
    2. num=1
    3. def __init__(self,age):
    4. self.age=age
    5. @staticmethod
    6. def set_num(a,b):
    7. num=a+b
    8. print("静态方法结果{}".format(num))
    9. #实例对象方法调用
    10. object=test(4)
    11. object.set_num(5,56)
    12. #类对象方法调用
    13. test.set_num(5,56)

    类方法

    定义

    Python声明属于类本身的方法,即类方法。不对特定的实例对象进行操作,且 不能访问实例对象的属性。

    说明

    使用修饰器@classmethod来标识类方法。

    格式

    class 类名:

            @classmethod

            def 类方法名(cls[,形参列表]):

                    方法体

    调用类方法:

    • 实例对象名调用类方法
    • 类名调用类方法

    实例

    1. class test:
    2. num=0
    3. def __init__(self,age):
    4. self.age=age
    5. @classmethod
    6. def set_num(cls,newNum):
    7. cls.num=newNum
    8. print("类方法结果{}".format(newNum))
    9. #类对象调用方法
    10. test.set_num(56)
    11. #实例对象调用方法
    12. test(12).set_num(56)

     三种方法对比

     

    方法具体说明

     方法区别

    若要修改实例的属性值,直接使用实例方法

    若要修改类的属性值,直接使用类方法

    若是辅助功能(如打印菜单等),考虑使用静态方法,即可在不创建对象的前提下使用。

    注意:使用类名不能访问实例属性或实例方法。

    传送门:Python全套学习笔记

  • 相关阅读:
    基子Android的自助洗衣店预约系统的设计与实现
    大灰狼远程管理[SVIP3会员版]易语言源码
    【问题记录】解决Qt连接MySQL报“QMYSQL driver not loaded”以及不支持MySQL事务操作的问题!
    mybatis-plus 标准分页功能
    SQL 宽字节注入详解
    JAVASE(复习)——方法重载、数组篇
    深入分析Spring的IoC容器:从底层源码探索
    为什么美客多可以测评补单?他们早已走在流量最前沿
    【算法-动态规划】最长公共子序列
    Java中的四种Reference
  • 原文地址:https://blog.csdn.net/weixin_60535956/article/details/127432990