当前位置:首页>python>6个Python类必知的核心概念和方法

6个Python类必知的核心概念和方法

  • 2026-10-21 13:28:22
6个Python类必知的核心概念和方法
类是面向对象编程的核心。在Python中,我们要经常使用类,下面我们对其进行快速学习。下面我们一起看看6个常见Python类的概念和方法。

1 定义类

class Corgi:
    def __init__(self, name):
        self.name = name
    def bark(self):
        print(f"{self.name}: 嗷呜~")

puppy = Corgi("短腿")
puppy.bark()          # 短腿: 嗷呜~

Class用来定义类,Corgi("短腿")用来实例类,实例后即可使用类描述的方法。

其中__init__ 负责「初始化」,不是分配内存。也有说是构造函数。

用类创建对象时,Python 会先自动调用一个真正的构造方法 __new__(负责在内存里把对象“造”出来),随后立即调用 __init__给这个新对象做初始化即给对象的属性赋初值、做各种设置。

第一个形参 self 就是实例本身,就是“把对象自己”传进去,但它并不是你显式地“手工”传的,而是 Python 自动帮你把刚创建好的那个实例对象作为第一个实参塞进方法里。

在Python中,普通实例方法必须写 self,@staticmethod 和 @classmethod 不用写self 或写 cls。也就是说只要方法前面没加装饰器,默认就是实例方法 → 就必须写 self。

f 是 f-string(“格式化字符串字面量”)的标志,Python 3.6+ 引入的最简洁、最快的字符串插值写法。写了f 后,相当于告诉解释器:把花括号里的表达式先算出来,再转成字符串塞回去。

命令执行效果如下:

2 类变量 vs 实例变量

类变量是在类中直接定义的,而非通过方法来定义,实例变量则是通过方法来实现。

通过实例化类,就可以直接使用类的变量。

class Corgi:
    species = "柯基"      # 类变量,全家通用
    def __init__(self, name):
        self.name = name  # 实例变量,各狗各的

3 私有属性

私有属性改变靠名字改写:__x → _类名__x ,满足一些特别的需要。在这里将变量增加为__money。

class DogBankAccount:
    def __init__(self, money):
        self.__money = money      # 前面双下划线
    def save(self, x):
        self.__money += x
    def show(self):
        return self.__money

dba=DogBankAccount(100)
print(dba.__money)
print(dba._DogBankAccount__money)

直接访问__money,会报错。但是可以通过类目加属性进行实现。

从运行中可以看到,dba通过_类名__x实现了对私有属性的访问。

4 把方法变成“属性”

通过@property标签,可以把下面的方法变成属性,调用的时候,不用写括号。

class Circle:
    def __init__(self, r):
        self.r = r
    @property
    def area(self):
        return 3.1416 * self.r ** 2

c = Circle(5)
print(c.area)      # 看起来像属性,其实是函数

执行效果如下:

5 继承

继承是面向对象开发的核心,通过继承,可以让儿子继承父亲的技能,从而减少代码,方便维护。

class Animal:
    def eat(self):
        print("吃")

class Corgi(Animal):
    def bark(self):
        print("叫")

short=Corgi()
short.eat();
short.bark();

从代码中可以看到Corgi继承了Animal,实例化Corgi后,可以使用Animal的方法。

6 魔法方法:让对象“像原住民”

通过实现这些魔法方法,我们自定义的类对象能拥有和 Python 内置类型(比如列表、字符串、整数这些 “原住民”)一样的行为和使用体验。那什么是魔法方法呢?

Python常见的原生方法有:__str__、__len__、__add__、__getitem__、__setitem__ ,__sub__ , __mul__、__eq__ 、 __ne__、__enter__ 、 __exit__等。

而魔法方法就是在新定义的类中,按照特点格式实现该方法,然后就可以用调Python内置类型相似的方法进行调用啦。

代码:

class Score:
    def __init__(self, math, chinese):
        self.math = math
        self.chinese = chinese
# 实现__add__,让两个成绩对象相加(总分相加)
    def __add__(self, other):
        if isinstance(other, Score): # 检查一个对象是否是指定类的实例
            return Score(self.math + other.math, self.chinese + other.chinese)
            # 创建一个新的 Score 对象
        raise TypeError("只能和Score对象相加")

    # 实现__str__,友好输出成绩
    def __str__(self):
        return f"数学:{self.math},语文:{self.chinese},总分:{self.math+self.chinese}"

s1 = Score(90, 85)
s2 = Score(80, 95)
s_total = s1 + s2  # 像整数相加一样用+
print(s_total)

直接使用,报错了。

这就是Python类的6个关键知识点,通过学习Python类的知识,可以帮助我们更好看懂Python代码,更好编写程序。

最新文章

随机文章