绑定方法和非绑定方法
(1)绑定方法
- 在Python中,对象是类的实例,而方法是与类相关联的函数。当你调用一个对象的方法时,该方法可以访问该对象的数据和其他方法。方法与对象之间的关系就是通过绑定实现的。
- 绑定方法是指类的实例方法,它在调用时自动将实例作为第一个参数传递给方法。
(1)绑定到对象的方法
| class Person: |
| def __init__(self, name, age): |
| self.name = name |
| self.age = age |
| |
| def greet(self): |
| print(f"我叫{self.name} 今年{self.age}岁") |
| |
| |
| |
| person = Person(name="heart", age=23) |
| |
| person.greet() |
| |
| Person.greet(self=person) |
- 在这个例子中,
greet
方法被绑定到 person
对象上。当调用 person.greet()
时,greet
方法能够访问 person
对象的属性(name
和 age
)并输出相应的结果。
(2)绑定到类的方法 classmethod
| class Math(): |
| |
| @classmethod |
| def add(cls, x, y): |
| print(x + y) |
| |
| |
| |
| Math.add(3, 5) |
| |
| res = Math() |
| res.add(1, 2) |
(2)非绑定方法 staticmethod
- 在类内部用staticmethod装饰的函数即非绑定方法,本质上就是一个普通函数
- staticmethod不与类或对象绑定,谁都可以调用,没有自动传值效果
| class Math: |
| @staticmethod |
| def add(x, y): |
| return x + y |
| |
| @staticmethod |
| def multiply(x, y): |
| return x * y |
| |
| |
| sum = Math.add(3, 5) |
| print(sum) |
| |
| result = Math.multiply(3, 5) |
| print(result) |
总结
- 若类中需要一个功能,该功能的实现代码中需要引用对象则将其定义成对象方法。
- 需要引用类则将其定义成类方法、无需引用类或对象则将其定义成静态方法。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通