Python案例如何调用实例方法?

wen python案例 12

本文目录导读:

Python案例如何调用实例方法?

  1. 最基本方式:通过实例对象调用
  2. 通过类名调用,需要显式传入实例
  3. 链式调用(方法返回self)
  4. 方法作为属性调用
  5. 异常处理中的调用
  6. 条件判断中的调用
  7. 批量调用方法
  8. 使用getattr动态调用

在Python中调用实例方法主要有以下几种方式,我来详细介绍:

最基本方式:通过实例对象调用

class Student:
    def __init__(self, name, score):
        self.name = name
        self.score = score
    def show_info(self):
        print(f"姓名:{self.name},成绩:{self.score}")
    def update_score(self, new_score):
        self.score = new_score
# 创建实例
stu = Student("小明", 95)
# 调用实例方法(最常用方式)
stu.show_info()  # 输出:姓名:小明,成绩:95
stu.update_score(98)
stu.show_info()  # 输出:姓名:小明,成绩:98

通过类名调用,需要显式传入实例

# 通过类名调用(需要传入实例对象)
Student.show_info(stu)  # 输出:姓名:小明,成绩:98

链式调用(方法返回self)

class Calculator:
    def __init__(self, value=0):
        self.value = value
    def add(self, num):
        self.value += num
        return self  # 返回自身实例
    def subtract(self, num):
        self.value -= num
        return self
    def multiply(self, num):
        self.value *= num
        return self
    def result(self):
        print(f"计算结果:{self.value}")
# 链式调用
calc = Calculator()
calc.add(10).multiply(2).subtract(5).result()  # 输出:计算结果:15

方法作为属性调用

class Printer:
    def __init__(self, text):
        self.text = text
    def print_message(self):
        print(f"消息:{self.text}")
p = Printer("Hello")
# 将方法赋值给变量
msg_func = p.print_message
# 通过变量调用
msg_func()  # 输出:消息:Hello

异常处理中的调用

class Database:
    def __init__(self):
        self.data = {}
    def save(self, key, value):
        self.data[key] = value
        print(f"已保存:{key}={value}")
    def load(self, key):
        if key in self.data:
            return self.data[key]
        else:
            raise KeyError(f"键 '{key}' 不存在")
db = Database()
try:
    db.save("name", "张三")
    result = db.load("name")
    print(f"读取结果:{result}")
    # 尝试读取不存在的键
    db.load("age")
except KeyError as e:
    print(f"错误:{e}")

条件判断中的调用

class User:
    def __init__(self, is_admin=False):
        self.is_admin = is_admin
    def view_dashboard(self):
        print("查看控制面板")
    def manage_users(self):
        if self.is_admin:
            print("管理用户(需要管理员权限)")
        else:
            print("无权限")
user = User(is_admin=True)
# 条件判断调用
if user.is_admin:
    user.view_dashboard()
    user.manage_users()

批量调用方法

class Team:
    def __init__(self, members):
        self.members = members
    def start_work(self):
        for member in self.members:
            member.work()
class Worker:
    def __init__(self, name):
        self.name = name
    def work(self):
        print(f"{self.name} 正在工作")
# 创建多个实例
worker1 = Worker("张三")
worker2 = Worker("李四")
worker3 = Worker("王五")
# 批量调用
team = Team([worker1, worker2, worker3])
team.start_work()
# 输出:
# 张三 正在工作
# 李四 正在工作
# 王五 正在工作

使用getattr动态调用

class CommandHandler:
    def hello(self):
        return "你好!"
    def goodbye(self):
        return "再见!"
    def help(self):
        return "可用命令:hello, goodbye, help"
handler = CommandHandler()
# 根据用户输入动态调用方法
commands = ['hello', 'goodbye', 'help']
for cmd in commands:
    if hasattr(handler, cmd):
        method = getattr(handler, cmd)
        result = method()
        print(f"调用 {cmd}:{result}")
  • 最常用instance.method() 方式
  • 类调用ClassName.method(instance),需要传实例
  • 链式调用:方法返回 self 实现连续调用
  • 动态调用:使用 getattr()hasattr() 等实现

实例方法的第一个参数永远是 self,但调用时不需要显式传递。

抱歉,评论功能暂时关闭!