面向对象编程 2:深入理解类与对象,玩转面向对象编程!
- 公众号:人生只不过是一场投资
- 温馨提示:每个笔记文档都会绑定一个笔记资源;手机端可能看不到,网页端请自行下载。
还记得上节课我们学习了如何创建类和对象吗?
这次,我们将更深入地探索类与对象的奥秘,掌握面向对象编程的核心技能! 🚀
前言
上一节课,我们学习了面向对象编程的基本概念,包括:
- 类 (Class): 对象的蓝图,定义了对象的属性和方法。
- 对象 (Object): 类的实例,拥有类定义的属性和方法。
这次,我们将学习更深入的内容,例如:
- 构造函数 (
__init__
) 和析构函数 (__del__
) - 实例属性和类属性
- 实例方法、类方法和静态方法
一、 构造函数 (__init__
) 和析构函数 (__del__
)
1.1 构造函数 (__init__
)
构造函数是类的一个特殊方法,用于在创建对象时初始化对象的属性。
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
# 创建 Dog 对象
my_dog = Dog("Buddy", 3)
print(f"My dog's name is {my_dog.name}.")
print(f"He is {my_dog.age} years old.")
在 __init__
方法中, self
参数表示当前创建的对象,我们使用 self.name
和 self.age
来访问和设置对象的属性。
1.2 析构函数 (__del__
)
析构函数是类的一个特殊方法,用于在对象被销毁时执行一些清理工作,例如关闭文件、释放资源等。
class MyFile:
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode
self.file = open(filename, mode)
def __del__(self):
self.file.close()
print(f"File '{self.filename}' closed.")
二、 实例属性和类属性
2.1 实例属性
实例属性是属于每个对象自己的属性,在构造函数 __init__
中定义。
class Dog:
def __init__(self, name, age):
self.name = name # 实例属性
self.age = age # 实例属性
2.2 类属性
类属性是属于类的属性,所有对象共享,在类中定义,但在任何方法之外。
class Dog:
species = "Canis lupus familiaris" # 类属性
def __init__(self, name, age):
self.name = name
self.age = age
print(Dog.species) # 输出:Canis lupus familiaris
三、实例方法、类方法和静态方法
3.1 实例方法
实例方法是属于对象的方法,第一个参数必须是 self
,表示当前对象。
class Dog:
# ...
def bark(self):
print("Woof!")
3.2 类方法
类方法是属于类的方法,第一个参数必须是 cls
,表示当前类。
class Dog:
# ...
@classmethod
def get_species(cls):
return cls.species
3.3 静态方法
静态方法既不属于类也不属于对象,只是一个普通的函数,放在类中只是为了逻辑上的组织。
class Dog:
# ...
@staticmethod
def is_valid_age(age):
return 0 <= age <= 20
总结
- 构造函数 (
__init__
) 用于初始化对象属性,析构函数 (__del__
) 用于清理资源。 - 实例属性属于对象,类属性属于类。
- 实例方法操作对象,类方法操作类,静态方法与类和对象无关。
掌握了这些知识,你对面向对象编程的理解又更进了一步! 继续加油吧!