class CLanguage: #类构造方法,也属于实例方法 def __init__(self): self.name = "C语言中文网" self.add = "http://task.lmcjl.com" # 下面定义了一个say实例方法 def say(self): print("正在调用 say() 实例方法")实例方法最大的特点就是,它最少也要包含一个 self 参数,用于绑定调用此方法的实例对象(Python 会自动完成绑定)。实例方法通常会用类对象直接调用,例如:
clang = CLanguage() clang.say()运行结果:
正在调用 say() 实例方法
当然,Python 也支持使用类名调用实例方法,但此方式需要手动给 self 参数传值。例如:#类名调用实例方法,需手动给 self 参数传值 clang = CLanguage() CLanguage.say(clang)运行结果为:
正在调用 say() 实例方法
和 self 一样,cls 参数的命名也不是规定的(可以随意命名),只是 Python 程序员约定俗称的习惯而已。
和实例方法最大的不同在于,类方法需要使用@classmethod
修饰符进行修饰,例如:
class CLanguage: #类构造方法,也属于实例方法 def __init__(self): self.name = "C语言中文网" self.add = "http://task.lmcjl.com" #下面定义了一个类方法 @classmethod def info(cls): print("正在调用类方法",cls)类方法推荐使用类名直接调用,当然也可以使用实例对象来调用(不推荐)。例如,在上面 CLanguage 类的基础上,在该类外部添加如下代码:
#使用类名直接调用类方法 CLanguage.info() #使用类对象调用类方法 clang = CLanguage() clang.info()运行结果为:
正在调用类方法 <class '__main__.CLanguage'>
正在调用类方法 <class '__main__.CLanguage'>
@staticmethod
修饰,例如:
class CLanguage: @staticmethod def info(name,add): print(name,add)静态方法的调用,既可以使用类名,也可以使用类对象,例如:
#使用类名直接调用静态方法 CLanguage.info("C语言中文网","http://task.lmcjl.com") #使用类对象调用静态方法 clang = CLanguage() clang.info("Python教程","http://task.lmcjl.com/python")运行结果为:
C语言中文网 http://task.lmcjl.com
Python教程 http://task.lmcjl.com/python
本文链接:http://task.lmcjl.com/news/9638.html