ホームページ >バックエンド開発 >Python チュートリアル >Python のインスタンス メソッド、クラス メソッド、およびクラス メソッドの静的メソッドの簡単な分析

Python のインスタンス メソッド、クラス メソッド、およびクラス メソッドの静的メソッドの簡単な分析

Go语言进阶学习
Go语言进阶学习転載
2023-07-25 16:09:381476ブラウズ

1. はじめに

クラスメソッドはさらに細かく分けることができ、クラスメソッド、インスタンスメソッド、静的メソッドに分けることができます。


2. 詳しいケースの説明

  1. ##例メソッド

    通常、クラスに定義されているメソッドは、デフォルトでインスタンス メソッドです。

例:

class CLanguage:
    # 类构造方法,也属于实例方法
    def __init__(self):
        self.name = "百度"
        self.add = "www.baidu.com"


    # 下面定义了一个say实例方法
    def say(self):
        print("正在调用 say() 实例方法")

say() メソッドを呼び出して関数を実装します。


clang = CLanguage()
clang.say()

実行結果:


Python のインスタンス メソッド、クラス メソッド、およびクラス メソッドの静的メソッドの簡単な分析

注:


インスタンス メソッドには、このメソッドを呼び出すインスタンス オブジェクトをバインドするために使用される自己パラメータが少なくとも 1 つ含まれている必要があります。

    #クラスメソッド

Python 类方法和实例方法相似,它最少也要包含一个参数,只不过类方法中通常将其命名为 cls,Python 会自动将类本身绑定给 cls 参数(注意,绑定的不是类对象)。所以在调用类方法时,无需显式为 cls 参数传参。

和实例方法最大的不同在于,类方法需要使用@classmethod修饰符进行修饰。

例:

class ass:
    #类构造方法,也属于实例方法
    def __init__(self):
        self.name = "百度"
        self.add = "www.baidu.com"
    #定义了一个类方法
    @classmethod
    def info(cls):
        print("正在调用类方法",cls)

如果没有 @classmethod,则 Python 解释器会将 fly() 方法认定为实例方法,而不是类方法。

类方法推荐使用类名直接调用。

#使用类名直接调用类方法
ass.info()
#使用类对象调用类方法
clang = ass()
clang.info()

运行结果:

Python のインスタンス メソッド、クラス メソッド、およびクラス メソッドの静的メソッドの簡単な分析

  1. 类静态方法

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

静态方法没有类似 self、cls 这样的特殊参数,因此 Python 解释器不会对它包含的参数做任何类或对象的绑定。

静态方法需要使用@staticmethod修饰。

例:

class ass:
    @staticmethod
    def info(name, add):
        print(name, add)

静态方法可以使用类名,类对象两种方式进行调用。

# 使用类名直接调用静态方法
ass.info("百度1", "www.baidu.com")
# 使用类对象调用静态方法
clang = ass()
clang.info("百度2", "www.baidu.com")

运行结果:

Python のインスタンス メソッド、クラス メソッド、およびクラス メソッドの静的メソッドの簡単な分析


三、总结

本文基于Python基础,介绍了实例方法、类方法和类方法静态方法,通过实际案例讲解了三种方法的不同用法,通过代码演示,运行效果图的展示,能够帮助读者更好的理解。

以上がPython のインスタンス メソッド、クラス メソッド、およびクラス メソッドの静的メソッドの簡単な分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はGo语言进阶学习で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。