• python 实例方法和类方法


    实例方法指的是 只有实例对象才可以 调用的方法。

    在类对象中定义实例方法时,第一个形参表示调用该方法的实例对象,其对应的实参由系统自动传入。
    第一个形参的名称通常是 self ,self不是关键字,而是Python约定成俗的命名,你完全可以取别的名字,但建议这么做。


    实例方法只能被实例对象所调用,有两种调用方式:

    1. 在类对象的内部
      语法:self.方法名([实参])

    2. 在类对象外部
      语法:实例对象.方法名([实参])


    调用实例方法时,系统自动将调用该实例方法的实例对象作为实参传递给第一个形参。
    第一个实参传递给第二个形参,第二个实参将会传给第三个形参,以此类推。

    实例方法最大的特点就是最少要包含一个 self 参数,该self参数的作用是绑定调用此方法的实例对象。

    
    class MyClass(object):
        # 定义实例方法
        def get_info(self, par1, par2):
            print(par1, par2)
    
        def get_other(self):
            # 在类对象内部调用实例方法:get_info
            self.get_info(1, 2)
    
    # 实例化
    res = MyClass()
    
    res.get_info(3, 4)
    res.get_other()
    
    


    1. 实例方法的第一个参数通常为self,它用来引用和调用实例。

    2. 在类中定义方法和定义普通的函数没有太大区别:

    class People(object):
        owner = "ren"  # 类属性
    
        def __init__(self, name, sex, age=18):
            self.name = name  # 实例属性
            self.age = age  # 实例属性
            self.sex = sex
    
        def voice(self):  # 实例方法
            print("我的名字是{},我{}岁了!".format(self.name, self.age))
    
    
    p = People("张三", "女")
    p.voice()  # 我的名字是张三,我18岁了!
    


    类方法

    类方法指类对象中使用装饰器 @classmethod 进行装饰的方法。

    在类对象定义类方法时,必须使用装饰器 @classmethod 进行装饰,第一个形参代表类对象,
    其对应的实参由系统自动传入。

    第一个形参的名称通常是 cls

    类方法可以被类对象调用。

    语法:类对象.方法名([]实参) 或者 self.方法名([实参])

    调用类方法时,系统自动将类对象作为实参传递给第一个形参。
    第一个实参传递给第二个形参...

    
    class MyClass(object):
        # 定义类方法
        @classmethod
        def func_a(cls, par1, par2):
            print(par1, par2)
    
        @classmethod
        def func_b(cls):
            # 通过类对象调用类方法
            MyClass.func_a(1, 2)  # 1 2
            cls.func_a(1, 2)  # 1 2
    
        def get_info(self):
            self.func_a(3, 4)
    
    
    # 通过类对象调用类方法
    # MyClass.func_a(8, 9)  # 8 9
    
    # 通过实例对象调用类方法
    
    mc = MyClass()
    # mc.func_a(4, 5)  # 4 5
    #
    mc.func_b()
    mc.get_info()  # 3 4
    


    汇总

    实例方法

    定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法);
    
    调用:只能由实例对象调用。
    

    类方法

    定义:使用装饰器@classmethod。第一个参数必须是当前类对象,该参数名一般约定为“cls”,通过它来传递类的属性和方法(不能传实例的属性和方法);
    
    调用:类和实例对象都可以调用。
    


    -----分界线------

    我们所看到的回报都有时间延时,
    
    所以看不见的时候才需要信仰,
    
    因为我们总是担心付出没有回报。
    
    
  • 相关阅读:
    学习笔记4
    学习笔记2
    学习笔记1
    树莓派与Arduino串口通信
    团队大作业第三周周报
    团队大作业第二周周报
    团队大作业第一周周报
    RTCSD_第三次作业
    RTCSD_第二次作业
    RTCSD_第一次作业
  • 原文地址:https://www.cnblogs.com/wwho/p/15614955.html
Copyright © 2020-2023  润新知