Python 面向对象编程基础:类与对象初体验

面向对象编程(OOP)是一种编程范式,它通过对象和类的概念来组织代码,使程序更加模块化、可维护和可扩展。Python 是一种支持面向对象编程的语言,提供了强大的类和对象机制。今天,就让我们一起学习 Python 中的面向对象编程基础,从类和对象的定义到基本用法,开启你的 OOP 之旅。

一、类(Class)与对象(Object)

(一)什么是类?

类是一种抽象的数据类型,它定义了一组具有相同属性和方法的对象的结构。类可以看作是一个模板,用于创建对象。

(二)什么是对象?

对象是类的实例,它是类的具体实现。每个对象都有自己的属性和方法,这些属性和方法由类定义。

二、定义类

在 Python 中,使用 class 关键字定义类。

(一)定义一个简单的类

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.")

(二)解释

  • __init__ 方法:这是一个特殊的方法,称为构造函数。它在创建对象时自动调用,用于初始化对象的属性。
  • self 参数self 是一个指向当前对象的引用,用于访问对象的属性和方法。

三、创建对象

通过类创建对象的过程称为实例化。

(一)创建对象

# 创建一个 Person 类的实例
person1 = Person("Alice", 25)
person2 = Person("Bob", 30)

# 调用对象的方法
person1.greet()  # 输出 "Hello, my name is Alice and I am 25 years old."
person2.greet()  # 输出 "Hello, my name is Bob and I am 30 years old."

(二)访问对象的属性

print(person1.name)  # 输出 "Alice"
print(person2.age)   # 输出 30

四、类属性与实例属性

(一)类属性

类属性是属于类的属性,所有实例共享。

class Person:
    species = "Homo sapiens"  # 类属性

    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.")

# 访问类属性
print(Person.species)  # 输出 "Homo sapiens"

# 创建实例
person1 = Person("Alice", 25)
print(person1.species)  # 输出 "Homo sapiens"

(二)实例属性

实例属性是属于每个实例的属性,每个实例都有自己的独立副本。

person1.name = "Alice Smith"
print(person1.name)  # 输出 "Alice Smith"

五、方法

(一)实例方法

实例方法是类中定义的普通方法,第一个参数总是 self,用于访问实例的属性和方法OpenSpeedy

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.")

(二)类方法

类方法的第一个参数是类本身,通常命名为 cls。类方法可以通过类名或实例调用。

class Person:
    count = 0  # 类属性

    def __init__(self, name, age):
        self.name = name
        self.age = age
        Person.count += 1

    @classmethod
    def get_count(cls):
        return cls.count

print(Person.get_count())  # 输出 0
person1 = Person("Alice", 25)
print(Person.get_count())  # 输出 1

(三)静态方法

静态方法不接收 selfcls 参数,它们就像普通函数一样,但属于类的命名空间。

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

    @staticmethod
    def is_adult(age):
        return age >= 18

print(Person.is_adult(25))  # 输出 True

六、继承

继承是面向对象编程中的一个重要概念,它允许一个类继承另一个类的属性和方法ScribeHow

(一)定义父类和子类

class Animal:
    def __init__(self, name):
        self.name = name

    def speak(self):
        pass

class Dog(Animal):
    def speak(self):
        return f"{self.name} says Woof!"

class Cat(Animal):
    def speak(self):
        return f"{self.name} says Meow!"

(二)使用继承

dog = Dog("Buddy")
cat = Cat("Whiskers")

print(dog.speak())  # 输出 "Buddy says Woof!"
print(cat.speak())  # 输出 "Whiskers says Meow!"

七、多态

多态允许不同的类具有相同名称的方法,但具体实现不同。

def animal_speak(animal):
    print(animal.speak())

animal_speak(dog)  # 输出 "Buddy says Woof!"
animal_speak(cat)  # 输出 "Whiskers says Meow!"

八、封装

封装是将对象的属性和方法封装在一起,隐藏内部实现细节,只暴露必要的接口KMSCX激活

class Person:
    def __init__(self, name, age):
        self._name = name  # 使用单下划线表示受保护的属性
        self.__age = age   # 使用双下划线表示私有属性

    def get_age(self):
        return self.__age

    def set_age(self, age):
        if age > 0:
            self.__age = age

person = Person("Alice", 25)
print(person.get_age())  # 输出 25
person.set_age(30)
print(person.get_age())  # 输出 30

九、总结

通过本文的介绍,你已经掌握了 Python 中面向对象编程的基础知识,包括类和对象的定义、属性和方法的使用、继承、多态和封装。以下是关键点总结:

  • :定义了一组具有相同属性和方法的对象的结构。
  • 对象:类的实例,具有自己的属性和方法。
  • 类属性:属于类的属性,所有实例共享。
  • 实例属性:属于每个实例的属性,每个实例都有自己的独立副本。
  • 实例方法:类中定义的普通方法,第一个参数是 self
  • 类方法:第一个参数是类本身,通常命名为 cls
  • 静态方法:不接收 selfcls 参数,属于类的命名空间。
  • 继承:一个类可以继承另一个类的属性和方法。
  • 多态:不同的类可以具有相同名称的方法,但具体实现不同。
  • 封装:将对象的属性和方法封装在一起,隐藏内部实现细节。
posted @ 2025-09-29 12:13  宁博要学习  阅读(20)  评论(0)    收藏  举报