本文目录导读:

在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,但调用时不需要显式传递。