Python类和对象详解_python中的类和对象,属性和方法

liftword4个月前 (02-17)技术文章31

Python中的类(Class)和对象(Object)是面向对象编程的核心概念。通过类来定义对象的属性和行为,而对象则是类的实例。

1. 类(Class)

类是用来创建对象的模板,它定义了对象的属性(数据)和方法(行为)。类本质上是对象的构造蓝图,可以通过类实例化(创建)对象。

python中定义类的语法:

class ClassName:
    # 类属性
    class_variable = "class variable"
    
    # 构造函数:初始化对象的属性
    def __init__(self, instance_variable):
        self.instance_variable = instance_variable  # 实例变量

    # 方法:类的行为
    def display(self):
        print(f"Instance variable is: {self.instance_variable}")
  • class:用来定义类的关键字。
  • __init__:构造函数(初始化方法),当类实例化时会自动调用它,通常用来初始化对象的属性。
  • self:指代实例本身,用于访问类的属性和方法。
  • 2. 对象(Object)

    对象是类的实例。你可以通过类创建多个对象,每个对象都有自己的属性值和方法。

    创建对象:

    # 创建类的实例(对象)
    obj1 = ClassName("Object 1")
    obj2 = ClassName("Object 2")
    
    # 调用方法
    obj1.display()  # 输出: Instance variable is: Object 1
    obj2.display()  # 输出: Instance variable is: Object 2

    3. 类的构造函数和实例属性

    构造函数(__init__)是初始化对象的地方,可以为每个实例对象设置不同的属性。每个对象都拥有自己的属性,不同对象之间互不影响。

    实例属性:

    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.")
        
    # 创建对象
    person1 = Person("Alice", 30)
    person2 = Person("Bob", 25)
    
    # 调用方法
    person1.greet()  # 输出: Hello, my name is Alice and I am 30 years old.
    person2.greet()  # 输出: Hello, my name is Bob and I am 25 years old.

    4. 类属性和实例属性的区别

    • 类属性:类属性是类的共有属性,所有实例共享同一个属性。
    • 实例属性:实例属性是每个对象特有的属性,不同对象的实例属性可以有不同的值。

    类属性示例:

    class Animal:
        species = "Unknown"  # 类属性
    
        def __init__(self, name):
            self.name = name  # 实例属性
    
        def show_info(self):
            print(f"My name is {self.name}, and I am a {self.species}.")
    
    # 创建对象
    animal1 = Animal("Lion")
    animal2 = Animal("Tiger")
    
    # 修改类属性
    Animal.species = "Mammal"
    
    animal1.show_info()  # 输出: My name is Lion, and I am a Mammal.
    animal2.show_info()  # 输出: My name is Tiger, and I am a Mammal.

    在上面的代码块中,species 是一个类属性,所有实例共享它。因此如果你修改了 species 的值,它会影响所有的实例。

    5. 类的方法

    类方法是定义在类中的函数,用于实现类的行为。类方法的第一个参数通常是 self,它指代对象本身。

    类方法的定义与调用:

    class Car:
        def __init__(self, make, model):
            self.make = make
            self.model = model
        
        def display(self):
            print(f"Car Make: {self.make}, Model: {self.model}")
    
    # 创建对象
    car1 = Car("Toyota", "Corolla")
    car1.display()  # 输出: Car Make: Toyota, Model: Corolla

    6. 类的继承

    Python支持类的继承,子类可以继承父类的属性和方法,还可以对父类的功能进行扩展或修改。

    继承示例:

    class Animal:
        def __init__(self, name):
            self.name = name
        
        def speak(self):
            print(f"{self.name} makes a sound")
    
    class Dog(Animal):  # Dog 继承自 Animal
        def __init__(self, name, breed):
            super().__init__(name)  # 调用父类的构造函数
            self.breed = breed
        
        def speak(self):
            print(f"{self.name} barks")
    
    # 创建对象
    dog = Dog("Buddy", "Golden Retriever")
    dog.speak()  # 输出: Buddy barks

    在上面的代码块中,Dog 类继承了 Animal 类,它拥有 Animal 类的方法 speak,但是在 Dog 类中对 speak 方法进行了重写。

    7. 静态方法和类方法

    • 静态方法:不需要访问实例属性或类属性,通常用于一些与类和实例无关的功能。
    • 类方法:第一个参数是类对象(cls),而不是实例对象(self),通常用于修改类的属性。

    静态方法示例:

    class Math:
        @staticmethod
        def add(a, b):
            return a + b
        
    # 调用静态方法
    print(Math.add(3, 5))  # 输出: 8

    类方法示例:

    class Counter:
        count = 0
        
        @classmethod
        def increment(cls):
            cls.count += 1
            print(f"Count is now: {cls.count}")
        
    # 调用类方法
    Counter.increment()  # 输出: Count is now: 1
    Counter.increment()  # 输出: Count is now: 2

    总结如下:

    • 是对象的模板,定义了对象的属性和方法。
    • 对象是类的实例,每个对象可以有不同的属性值。
    • 类属性是共享的,所有实例都能访问并修改。
    • 实例属性是每个对象独有的属性。
    • 继承使得类能够扩展或修改父类的行为。

    相关文章

    Python 对象有哪几种,我们可以从哪些角度进行分类呢?

    楔子在程序开发中,我们每时每刻都在创建对象,那到底什么是对象呢?其实一个对象就是一片被分配的内存空间,空间可以是连续的,也可以是不连续的。然后空间里面存储了指定的数据,并提供了操作数据的一些功能方法。...

    python初识对象_python对象编程

    使用对象组织数据1.在程序中设计表格,我们称之为:设计类(class)class Student: name = None # 记录学生姓名2.在程序中打印表格,我们称之为:创建对...

    你需要理解的Python核心概念-对象

    对象是 Python 语言的构建块Python 很容易学习。然而,它有一些更难理解的方面,比如类和对象的世界。在本文中,你将学到:在 Python 中一切都是对象如何创建自己的类和对象什么是继承以及如...

    如何用 Python 构建一个决策树_python决策结构

    本文最初发布于 Medium 网站,经原作者授权由 InfoQ 中文站翻译并分享。决策树是一个经久不衰的话题。本文要做的是将一系列决策树组合成一个单一的预测模型;也就是说,我们将创建集成方法(Ense...

    详细介绍一下Python中的类与对象_python对象和类的关系

    类和对象是面向对象编程的两个核心概念,而Python作为一门支持面向对象的编程语言,也是需要通过类和对象来实现代码的组织和封装的,下面我们就来详细介绍一下Python中的类与对象,来帮助大家一起了解它...

    python大师讲解python对象类型_python 对象类型

    Python对象的基本概念对象是Python中最基本概念。Python程序可以分解成模块、语句、表达式、以及对象程序由模块构成模块包含语句语句包含表达式表达式建立并处理对象Python内置类型Pyth...