Python 类:探索面向对象编程的奇妙世界

在 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属性是私有的

进行如下操作:
在这里插入图片描述
可以看到实例化类后,并没法直接访问对象的属性。

有所收益的话,感谢关注,持续更新,一起进步~

  • 17
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值