Hi~新朋友,记得点上面蓝字(网虫root)关注哟~
前言:
Python是一门面向对象的编程语言,它支持使用类(class)和对象(object)来组织代码。通过类和对象,可以将数据(属性)和操作(方法)封装在一起,使代码更加模块化、易于维护和复用。
1. 面向对象编程简介
面向对象编程(Object-Oriented Programming, OOP) 是一种程序设计范式,它将程序看作一组相互协作的对象,每个对象拥有自己的状态(数据)和行为(方法)。对象是类的实例,类定义了对象的蓝图。
举个例子:你可以把“狗”看作一个类,它定义了所有狗共有的属性(如名字、年龄)和行为(如叫、跑)。而具体的一只名叫“旺财”的2岁小狗,就是“狗”类的一个对象。
🔍进一步理解:
💡关键洞察:
类是抽象概念,对象是具体实现。
类 = 说明书,对象 = 按说明书造出的实物。
2. 类的定义
2.1语法结构
在Python中,使用 class 关键字来定义一个类,后接类名,类名通常采用驼峰命名法(即每个单词首字母大写,例如 MyClass),类体以缩进块表示。
class ClassName: # 类体:定义属性和方法
🧰关键语法:
2.2 类的定义示例
class Dog: """一个简单的Dog类,表示狗的属性和行为""" # 类体
3.对象的创建:实例化(实例化对象 )
3.1 语法
对象是类的实例,通过调用类名后加括号创建,可以创建一个该类的实例(对象),括号内可传递初始化参数(如果类定义了 __init__ 方法)。
object_name = ClassName(arguments)
🧭关键语法:
3.2 对象创建示例
class Dog: def __init__(self, name, breed): self.name = name self.breed = breed创建两个Dog对象:my_dog = Dog("Buddy", "Golden Retriever") # 实例化对象your_dog = Dog("Max", "Labrador") # 另一个对象
4. 构造函数 __init__()
通常我们希望对象在创建时就拥有一些初始属性,这可以通过定义 __init__() 方法来实现。__init__() 是一个特殊方法(也称为构造函数),它在对象创建后自动调用,用于初始化对象的属性。
class Dog: def __init__(self, name, age): self.name = name # 实例属性 self.age = age # 实例属性
💡创建带初始值的对象:
dog1 = Dog("旺财", 2)dog2 = Dog("来福", 3)print(dog1.name) # 输出:旺财print(dog2.age) # 输出:3
🎯注意:
__init__() 方法的参数除了 self 外,可以定义任意多个,在实例化时必须传入对应的实参。
__init__在对象创建时自动调用,且只执行一次!
无论你创建多少个对象,每个对象的__init__都独立执行一次。
5. 对象创建全过程
class Dog: def __init__(self, name, age): print("步骤3:调用__init__方法") # 仅在创建对象时执行 self.name = name # 实例属性 self.age = age # 实例属性# 创建对象(触发__init__)buddy = Dog("Buddy", 5) # 输出: 步骤3:调用__init__方法max = Dog("Max", 3) # 输出: 步骤3:调用__init__方法
🔍 为什么强调“只执行一次”?
当创建buddy时,__init__执行一次 → 初始化buddy的属性
当创建max时,__init__再次执行 → 初始化max的属性
不是所有对象共享同一个__init__执行!每个对象独立触发。
🌲当执行 buddy = Dog("Buddy", 5) 时,Python会严格按顺序执行以下步骤:
| | | |
|---|
| | buddy = Dog("Buddy", 5) | |
| | __new__(cls, *args, kwargs) | 这是一个静态方法,负责创建并返回一个新的实例。如果类中没有定义 __new__,则会调用父类的 __new__。底层构造函数(通常无需重写) |
| | __init__(self, name, age) | 如果 __new__ 返回了该类的实例,Python 会自动调用 __init__ 来初始化这个新创建的对象,传入 self 以及调用时提供的参数。关键步骤! 仅执行一次 |
| | buddy = ... | |
| | | |
6. __init__ vs __new__
class Dog: species = "Canis familiaris" def __new__(cls, *args, **kwargs): print("1. __new__ 被调用") instance = super().__new__(cls) return instance def __init__(self, name, age): print("2. __init__ 被调用") self.name = name self.age = age# 创建对象my_dog = Dog("Buddy", 3)输出:1. __new__ 被调用 #步骤1:调用__new__方法 2. __init__ 被调用 #步骤2: 调用__init__方法 # 再次创建对象,__init__ 会再次执行(每个对象独立)another_dog = Dog("Lucy", 5)# 同样会打印两条信息
💡 重要提示:
7.简单的类示例
class Dog: """一个简单的狗类""" species = "Canis familiaris" # 类属性 def __init__(self, name, age): """构造方法,初始化实例属性""" self.name = name self.age = age def description(self): """返回描述信息""" return f"{self.name} is {self.age} years old" def bark(self, sound): """狗叫方法""" return f"{self.name} says {sound}"# 创建两个 Dog 实例my_dog = Dog("Buddy", 3)your_dog = Dog("Lucy", 5)print(my_dog.description()) # 输出: Buddy is 3 years oldprint(your_dog.bark("Woof")) # 输出: Lucy says Woof
【微语】有创造力的人不会沉溺于过去的痛苦,他们会学会教训;而弱者则是整日沉浸在痛苦里,回顾以往的苦难来折磨自己。