python函数与类方法的详细区别与作用

  • Post category:Python

Python是一种面向对象的编程语言,支持函数和类。函数和类都是实现代码重用的方法。下面我们来详细讲解Python函数和类方法的区别和作用。

函数

定义

函数是Python中用来定义可重用代码块的语法结构。函数是使用关键字 def 定义,后跟函数名和括号。括号中的变量被称为函数参数。

def add(x, y):
    return x + y

调用

函数定义之后可以通过函数名和适当参数调用函数。函数返回值可选。

result = add(1, 2)
print(result)

特点

函数有以下几个特点:

  • 函数是一个代码块,可以单独调用。
  • 函数可以接收参数。
  • 函数可以返回值。

实例

下面的代码为计算圆的面积:

import math


def circle_area(radius):
    return math.pi * pow(radius, 2)


print(circle_area(3))

类方法

定义

类是一种面向对象的编程模型。在Python中,我们通过定义类来创建对象。类方法是一种方法,它可以被对象或类调用。类方法使用 @classmethod 装饰器声明。

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    @classmethod
    def from_birth_year(cls, name, birth_year):
        age = datetime.date.today().year - birth_year
        return cls(name, age)

调用

类方法有两种调用方式。

第一种是通过类名调用:

person = Person.from_birth_year('Tom', 1985)
print(person.name, person.age)

第二种是通过对象调用:

person = Person('Jerry', 25)
person = person.from_birth_year('Tom', 1985)
print(person.name, person.age)

特点

类方法有以下几个特点:

  • 类方法是类的代码单元,可以被类和类的实例调用。
  • 类方法有cls参数,该参数代表类。
  • 类方法可用来进行与类有关的操作,比如工厂方法。

实例

下面的代码实现了一个简单的工厂类:

class Car:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year

    def get_make(self):
        return self.make

    def get_model(self):
        return self.model

    @classmethod
    def from_string(cls, car_string):
        make, model, year = car_string.split('-')
        return cls(make, model, year)


car = Car.from_string('Toyota-Corolla-2022')
print(car.get_make())
print(car.get_model())

以上就是Python函数和类方法的详细区别和作用。一句话简述,函数是对代码的过程性封装,而类方法是对代码的面向对象封装。