零基础入门python3.7 ——基础知识总结(十九) 类的方法

Oralie ·
更新时间:2024-09-20
· 561 次阅读

既然类的属性可以分类。那么方法也可以分类。 类方法可划分为实例方法。 静态方法 和类方法。采用@classmethod 装饰的方法称之为类方法。 用 @staticmethod 装饰的称之为静态方法。不做任何装饰的称之为实例方法。

一。实例方法

定义在类中的默认方法都属于实例方法。  包括构造方法也属于一个特殊的实例方法

class Person: def __init__(self): self.name = "王小明", self.age = 20, self.city = '成都' def getName(self): return self.name 实例方法最大的特点是包含一个self参数。用于绑定调用此方法的实例对象。通常情况下通过类对象直接调用 class Person: def __init__(self): self.name = "王小明", self.age = 20, self.city = '成都' def getName(self): return self.name a = Person() print(a.name) ('王小明',) 可以通过类名调用实例方法。但是需要手动绑定self参数 class Person: def __init__(self): self.name = "王小明", self.age = 20, self.city = '成都' def getName(self): return self.name a = Person() print(Person.getName(a)) ('王小明',) 通过类名调用时如果不绑定self参数会抛出异常 class Person: def __init__(self): self.name = "王小明", self.age = 20, self.city = '成都' def getName(self): return self.name a = Person() print(Person.getName()) Traceback (most recent call last): File "/Users/apple/Documents/重要文件/python3/python21.py", line 10, in print(Person.getName()) TypeError: getName() missing 1 required positional argument: 'self' self完全可以任意传入一个参数。但是胡乱的给 self 参数传参都将会导致程序运行崩溃。 class Person: def __init__(self): self.name = "王小明", self.age = 20, self.city = '成都' def getName(self): print("哈哈") a = Person() Person.getName("python") 哈哈

用类的实例对象访问类成员的方式称为绑定方法,而用类名调用类成员的方式称为非绑定方法。

二。类方法

类方法和实例方法相似。 也需要至少包含一个参数。这个参数的名称不再是self而是cls,python会讲类本身自动的绑定到cls上,注意不是类的实例对象。而这个参数也是约定俗成的。

class Person: def __init__(self): self.name = "王小明", self.age = 20, self.city = '成都' def getName(self): print("哈哈") @classmethod def add(cls): print("这是一个类方法")

如果没有@classmethod那么其就是一个实例方法

推荐使用类名直接调用类方法 class Person: def __init__(self): self.name = "王小明", self.age = 20, self.city = '成都' def getName(self): print("哈哈") @classmethod def add(cls): print("这是一个类方法") Person.add() 这是一个类方法 可以使用实例对象调用但不推荐 class Person: def __init__(self): self.name = "王小明", self.age = 20, self.city = '成都' def getName(self): print("哈哈") @classmethod def add(cls): print("这是一个类方法") a = Person() a.add() 这是一个类方法 三。静态方法

静态方法实际上就是普通的函数。 只是定义空间不同而已。 静态方法是定义在类这个空间里的。 而函数是定义在全局函数里的,静态方法也没有self,cls这样的特殊参数。python不会要求绑定任何的类或对象。正因为如此类方法中无法调用任何类方法和类属性。

class Person: def __init__(self): self.name = "王小明", self.age = 20, self.city = '成都' def getName(self): print("哈哈") @staticmethod def add(name): print(name) 通过类名调用 class Person: def __init__(self): self.name = "王小明", self.age = 20, self.city = '成都' def getName(self): print("哈哈") @staticmethod def add(name): print(name) Person.add("小王") 小王 通过实例对象调用 class Person: def __init__(self): self.name = "王小明", self.age = 20, self.city = '成都' def getName(self): print("哈哈") @staticmethod def add(name): print(name) a = Person() a.add("小王") 小王

在实际编程中,几乎不会用到类方法和静态方法,因为完全可以使用函数代替它们实现想要的功能

雯倾浅忆 原创文章 39获赞 177访问量 4万+ 关注 私信 展开阅读全文
作者:雯倾浅忆



方法 零基础 Python3 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号