美文网首页
python3-面向对象之实例方法、类方法和静态方法

python3-面向对象之实例方法、类方法和静态方法

作者: Snails_Tin | 来源:发表于2021-07-23 15:20 被阅读0次

来自python3学习笔记,有不正确的地方大家多多指教

一、实例方法

通常情况下,在类中定义的方法都属于实例方法,且类的构造函数也就是int()也属于实例方法。

class Language:
    def __init__(self):
        self.name = "Python"
        self.add = "http//www.baidu.com"

    def test(self):
        print("这是实例方法")

实例方法中最大的特点就是最少需要包含一个self参数,实例方法可以使用类的实例对象调用或者使用类名调用。

1.类的实例对象调用

class Language:
    def test(self):
        print("这是实例方法")

if __name__ == '__main__':
    l = Language()
    l.test()

--输出:
这是实例方法

2.类名调用

如果通过类名直接调用实例方法,如下所示:会出现错误

class Language:
    def test(self):
        print("这是实例方法")

if __name__ == '__main__':
    Language.test()

输出:

image.png

在调用的时候缺少self参数,在调用的时候需要传入参数

class Language:
    def test(self):
        print("这是实例方法")

if __name__ == '__main__':
    l = Language()
    Language.test(l)

--输出:
这是实例方法

或者使用下面的方法:

class Language:
    def test(self):
        print(self, "这是实例方法")

if __name__ == '__main__':
    Language.test("蜗牛")

--输出:
蜗牛 这是实例方法

二、类方法

类方法与实例方法方法相似,最少需要包含一个参数cls,与实例方法不同的是,类方法前面需要加上@classmethod,如果没有加上@classmethod,则会默认为实例方法,而不是类方法。

类方法的调用

class Language:
    @classmethod
    def test(cls):
        print("这是类方法")

if __name__ == '__main__':
    Language.test()


class Language:
    @classmethod
    def test(cls):
        print("这是类方法")

if __name__ == '__main__':
    l = Language()
    l.test()

三、静态方法

静态方法与函数的差别就是:静态方法定义在类这个空间(类命名空间)中,而函数则定义在程序所在的空间(全局命名空间)中。

静态方法中没有固定的参数self或cls,调用方法有两种:

  • 类名.方法名
  • 实例化对象

1.类名.方法名调用

class Language:
    @staticmethod
    def test(name, add):
        print("这是静态方法:{0},{1}".format(name, add))

if __name__ == '__main__':
    Language.test("Python", "http//baidu.com")

--输出:
这是静态方法:Python,http//baidu.com

2.实例化对象调用

class Language:
    @staticmethod
    def test(name, add):
        print("这是静态方法:{0},{1}".format(name, add))

if __name__ == '__main__':
    l = Language()
    l.test("Python", "http//baidu.com")

--输出:
这是静态方法:Python,http//baidu.com

class Language:
    name = "Python"
    add = "http//baidu.com"

    @staticmethod
    def test(name, add):
        print("这是静态方法:{0},{1}".format(name, add))

if __name__ == '__main__':
    l = Language()
    l.test(l.name, l.add)

--输出:
这是静态方法:Python,http//baidu.com

相关文章

  • python 面向对象中实例方法,静态方法和类方法

    python面向对象中有三种方法,分别为实例方法,静态方法和类方法 实例方法 实例方法是在类中定义的方法,并且方法...

  • 再论静态方法和类方法

    实例对象可以调用实例方法、类方法、静态方法 类对象只能调用类方法、静态方法

  • Swift 中的方法声明

    实例方法 类方法 静态方法 实例方法由实例对象进行调用;类方法和静态方法由类对象进行调用

  • Java自学-类和对象 类方法

    Java的类方法和对象方法 类方法: 又叫做静态方法 对象方法: 又叫实例方法,非静态方法 访问一个对象方法,必须...

  • TypeScript:方法装饰器

    在讲方法装饰器之前,我们先来回顾下面向对象,在类里边,有实例方法也有静态方法,那什么是实例方法,什么又是静态方法,...

  • 类方法 VS 静态方法

    类对象、实例对象、类属性、实例属性、类方法、实例方法、静态方法。 @staticmethod@classmetho...

  • Python类中的方法是如何工作的

    在OO(面向对象)编程中,类中的方法有多种形式:实例方法、静态方法、类方法、甚至还可以有抽象方法,本文来说说实例方...

  • Python类中的方法是如何工作的

    在OO(面向对象)编程中,类中的方法有多种形式:实例方法、静态方法、类方法、甚至还可以有抽象方法,本文来说说实例方...

  • 类和对象

    面向对象概述类类的构造方法静态变量、常量和方法类的主方法对象

  • iOS中关于类方法和实例方法及self和super

    一、关于类方法和实例方法: 1、类方法:Class Method 有时被称为静态方法,类方法可以独立于实例对象而执...

网友评论

      本文标题:python3-面向对象之实例方法、类方法和静态方法

      本文链接:https://www.haomeiwen.com/subject/foqpmltx.html