一. 实例方法:

实例方法是属于对象的功能 / 行为,是类中最常用的方法,用于描述对象能做什么。

1.什么是实例方法

定义在类内部,用于描述对象的行为;必须通过对象调用,不能直接用类名调用;第一个参数固定为 self,代表当前调用方法的实例对象本身。

在类中定义实例方法时,定义语法与函数定义的方法是一致的 。

2.基本语法

# 定义类
class 类名:
    def __init__(self, 形参列表):
        self.属性名 = 参数值
        self.属性名 = 参数值

    def 方法名(self, 形参列表):
        # 方法功能代码
        # 可通过self访问对象的属性
        ...

# 创建对象
对象名 = 类名(参数列表)
# 调用实例方法
对象名.方法名(实参)

代码示例:

# 定义学生类
class Student:
    # 初始化属性:姓名、年龄
    def __init__(self, name, age):
        self.name = name
        self.age = age

    # 实例方法1:介绍自己
    def introduce(self):
        print(f"大家好,我叫{self.name},今年{self.age}岁")

    # 实例方法2:学习
    def study(self, subject):
        print(f"{self.name}正在学习{subject}")

# 创建对象
stu = Student("小明", 18)
# 调用实例方法
stu.introduce()    # 大家好,我叫小明,今年18岁
stu.study("Python")# 小明正在学习Python

程序运行结果

注意:self 是固定参数,定义时必须写,调用时不用传值;

           实例方法内部可以通过 self.属性名 直接访问对象属性;

            实例方法隶属于对象,只能由对象调用。

二.魔法方法

1.什么是魔术方法

魔术方法是指在Python中以双下划线开头和结尾的特殊方法,用于定义类的特殊行为;

魔术方法不需要手动调用,Python会在特定的时机自动调用。

2.常见的魔术方法

(1)__init__方法:初始化方法

在创建对象时自动调用,为实例对象设置对应的属性。

def __init__(self, name):
    self.name = name

(2)__str__方法:字符串表示的方法

打印对象、转换对象为字符串时自动调用;使用return返回一个字符串(必须);自定义打印对象时的输出内容。

class Student:
    def __init__(self, name):
        self.name = name

    # 定义__str__,自定义输出内容
    def __str__(self):
        return f"学生对象:姓名={self.name}"

stu = Student("小红")
print(stu)  # 自动执行__str__,输出:学生对象:姓名=小红

(3)__del__方法:删除对象的方法

对象被销毁 / 程序结束时自动调用,一般用于释放资源

(4)__eq__方法:比较两个对象是否相等

使用 == 比较两个对象时自动调用,自定义对象相等的判断逻辑。

三.属性分类

Python 中对象的属性分为两类,作用范围和使用方式完全不同。

1.实例属性

属于单个实例对象;

每个对象独立拥有,互不干扰;

在 __init__ 中通过 self.属性名 定义

只能通过对象名.属性访问

各个对象独有的数据(姓名、年龄、型号等)。

代码示例

class Car:
    def __init__(self, brand):
        self.brand = brand  # 实例属性

c1 = Car("宝马")
c2 = Car("奔驰")
print(c1.brand)  # 宝马(独立属性)

2.类属性

属于类本身;

所有对象共享同一个值,一处修改,全部生效;

定义在类内部、方法外部;

推荐用类名.属性,也可用对象调用;

所有对象共享的数据。

代码示例

class Car:
    # 类属性:所有汽车共享的类型
    type = "汽车"

    def __init__(self, brand):
        self.brand = brand

# 类名访问类属性(推荐)
print(Car.type)  # 汽车

# 对象也可访问类属性
c1 = Car("奥迪")
print(c1.type)  # 汽车

3.属性查找规则

通过实例对象查找属性时,会先查找实例属性;

当实例属性不存在时,才会查找类属性;

两种属性都找不到,则会报错。

四.总结

1. 实例方法依赖对象调用,自带self参数,用于实现对象的具体行为;

2. 魔术方法是双下划线开头和结尾的特殊方法,Python会自动调用,用于定义类的特殊行为;

3. 实例属性归对象独有,类属性归所有对象共享,查找时优先实例属性。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐