在 Python 中,类是一种强大的工具,可以让你更有组织地编写代码,实现真正的面向对象编程。
本篇文章将详细介绍 Python 类的知识点和使用方法,通过通俗易懂的解释和使用案例,帮助大家轻松理解并掌握类的奥秘。
1、类和对象的基础
1.1 类的定义
在 Python 中,通过 class 关键字可以定义一个类:
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def bark(self):
print(f"{self.name} 汪汪叫!")
-
init 方法是一个特殊的方法,用于初始化对象的属性。
-
self 表示对象本身,类似于其他语言中的 this。
通用的类模版如下:
class 类名称:
def __init__(self, 参数):
self.name = name #参数赋值定义
def 方法名(self):
# 具体动作
就像游戏中创建角色,去定义它的属性和能力。
1.2 对象的创建和使用
通过类可以创建对象,每个对象都是类的实例:
my_dog = Dog("Buddy", 3)
my_dog.bark() # 输出:Buddy 汪汪叫!
当我们给类传入具体的参数后,就创建了一个具体的对象。
就像我们定义了某类游戏角色的属性和能力后,我们需要把具体的属性值赋予给它才能真正应用。
如上,我们先定义了一个狗的大类,但类中狗的名字和年龄需要我们真正赋值的时候,才完成了一个对象的创建。
2、类的属性和方法
2.1 属性
类中的变量称为属性,用于存储对象的状态(相当于角色的属性):
class Circle:
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * self.radius ** 2
2.2 方法
类中的函数称为方法,用于定义对象的行为(相当于角色的技能):
my_circle = Circle(5)
print(my_circle.area()) # 输出:78.5
3、继承和多态
3.1 继承
继承允许一个类继承另一个类的属性和方法:
class Cat(Dog):
def purr(self):
print(f"{self.name} 喵喵叫!")
这就类似于能力的传承,下一代继承了上一代的全部非私有属性和能力
比如,新建的猫类继承了狗的名字和年龄属性,以及汪汪叫的能力,同时自己也会喵喵叫。
3.2 多态
多态允许不同类的对象对相同的方法做出响应:
#创建狗类
class Dog:
def __init__(self, name, age):
self.name = name
self.age = age
def bark(self):
print(f"{self.name} 汪汪叫!")
#创建猫类
class Cat:
def __init__(self, name, age):
self.name = name
self.age = age
def bark(self):
print(f"{self.name} 喵喵叫!"
#多态统一方法
def animal_sound(animal):
animal.bark()
my_pet = Dog("Fido", 2)
animal_sound(my_pet) # 输出:Fido 汪汪叫!
my_pet = Cat("Whiskers", 1)
animal_sound(my_pet) # 输出:Whiskers 喵喵叫!
也就是如果两个类有相同的方法,我们可以用新的方法把他们统一起来,形成一个集合。
如上,如果猫类,狗类都有bark()的方法,那可以用叫声这一类方法把他们统一起来,从而可以把叫声统一在一起供使用。
4、封装
封装是将对象的属性和方法限制在类内部,防止外部直接访问。在 Python 中,使用 _ 表示属性是私有的:
class BankAccount:
def __init__(self, balance):
self._balance = balance
def get_balance(self):
return self._balance
def deposit(self, amount):
if amount > 0:
self._balance += amount
如上我们定义了一个银行类,并且balance属性是私有的
进行如下操作:
可以看到实例化类后,并没法直接访问对象的属性。
有所收益的话,感谢关注,持续更新,一起进步~