Python Class 中的方法

liftword2周前 (06-03)技术文章4

1.实例方法

实例方式是和类的某个实例绑定,所以它可以访问实例中的属性,该方法的特征是:第一个参数是self,通过self访问属性,这是最常见的一种方法类型

下面中的greet方法就属于实例方法

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

    def greet(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")
        
        
if __name__ == "__main__":
    person = Person("Alice", 30)
    person.greet()2

2.类方法

需要在方法签名上使用@classmethod修饰,方法的特征是特征是:第一个参数是cls,通过这个参数可以获取类的信息,可以打印类的信息,也可以调用这个类的构造方法,不能直接访问实例中的属性。

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

    def greet(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")
        
    @classmethod
    def from_string(cls, person_str):
        # 打印类的信息
        print(cls.__name__)
        name, age = person_str.split(",")
        return cls(name.strip(), int(age.strip()))
if __name__ == "__main__":
    # 通过调用from_string方法,创建一个 Person 实例
    Person.from_string("Bob, 25").greet()

3.静态方法

静态方法需要使用@staticmethod修饰,该方法和类没有绑定关系,

主要是用来写一个写一些通用的工具函数。

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

    def greet(self):
        print(f"Hello, my name is {self.name} and I am {self.age} years old.")
        
    @staticmethod
    def is_adult(age):
        return age >= 18
if __name__ == "__main__":
    print(Person.is_adult(20))  # True
    print(Person.is_adult(17))  # False

4.抽象方法

1.抽象方法存在于抽象类中,如果要定义一个抽象类需要继承ABC。

2.抽象方法存在的意义就是定义标准,具体的实现有子类实现。

3.抽象类不能直接实例化,因为包含的抽象方法不能直接被调用。

4.抽象方法需要使用@abstractmethod修饰。

from abc import ABC, abstractmethod

class Animal(ABC):
    @abstractmethod
    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        return "Woof"

class Cat(Animal):
    def speak(self):
        return "Meow"

# 以下代码会报错,因为无法实例化抽象类
if __name__ == "__main__":
    #TypeError: Can't instantiate abstract class Animal with abstract method speak
    # animal = Animal()  # 
    dog = Dog()
    print(dog.speak())  # 输出: Woof

    cat = Cat()
    print(cat.speak())  # 输出: Meow

相关文章

python面向对象四大支柱——抽象(Abstraction)详解

抽象是面向对象编程的四大支柱之一,它强调隐藏复杂的实现细节,只暴露必要的接口给使用者。下面我将全面深入地讲解Python中的抽象概念及其实现方式。一、抽象的基本概念1. 什么是抽象?抽象是一种"...

探秘Python抽象类

在那篇探讨Python接口与“鸭类型”关系的文章中(Python中接口与鸭类型),我们详细介绍了Python中接口的实现方式--鸭类型。尽管“鸭类型”仅作为接口的一种实现策略,并不具备像Java等其他...

[python] python抽象基类使用总结

在Python中,抽象基类是一类特殊的类,它不能被实例化,主要用于作为基类被其他子类继承。抽象基类的核心作用是为一组相关的子类提供统一的蓝图或接口规范,明确规定子类必须实现的方法,从而增强代码的规范性...

Python面向对象编程(OOP)实践教程

一、OOP理论基础1. 面向对象编程概述面向对象编程(Object-Oriented Programming, OOP)是一种编程范式,它使用"对象"来设计应用程序和软件。OOP的核心...

编程开发中的抽象概念

在编程开发中,抽象概念是核心思想之一,它通过隐藏复杂细节、提炼共性模式来简化设计和实现。以下是编程中常见的抽象概念分类及示例:1. 数据抽象(Data Abstraction)核心思想:将数据的具体表...

python进阶-Day2: 面向对象编程 (OOP)

以下是为 Python 进阶 Day 2 设计的学习任务,专注于面向对象编程(OOP)的核心概念和高阶特性。代码中包含详细注释,帮助理解每个部分的实现和目的。任务目标:复习 OOP 基础:类、对象、继...