• 实例方法:默认第一个参数 self,只能由对象调用,访问实例属性
  • 类方法 @classmethod:第一个参数 cls,属于类,统一管类属性
  • 静态方法 @staticmethod:无默认参数,跟类和对象基本无关,就是普通工具函数
  • 属性方法 @property:把方法伪装成属性,不用加括号调用,安全读写

1. 实例方法(基础对照)

最普通的方法,必须通过对象调用,能访问自己的实例属性。

python

运行

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

    # 实例方法
    def say(self):
        print(f"我是{self.name}")

p = Person("小明")
p.say()

特点:自带 self,只能访问对象自己的数据。


2. 类方法 @classmethod

特点

  1. 装饰器:@classmethod
  2. 第一个参数必须是 cls(代表当前类)
  3. 可以用类名调用,也可以用对象调用
  4. 只能操作类属性,不能直接用实例属性

代码示例

python

运行

class Person:
    # 类属性
    count = 0

    def __init__(self):
        Person.count += 1

    # 类方法
    @classmethod
    def get_count(cls):
        # cls 就是 Person 这个类
        print(f"总人数:{cls.count}")

# 类直接调用
Person.get_count()

p1 = Person()
p2 = Person()
# 对象也能调用
p1.get_count()

适用场景:统计数量、工厂方法、统一修改类全局数据。


3. 静态方法 @staticmethod

特点

  1. 装饰器:@staticmethod
  2. 不需要 self、cls,无默认参数
  3. 跟类逻辑相关,但不访问类属性、也不访问实例属性
  4. 类和对象都可以调用

代码示例

python

运行

class Person:
    @staticmethod
    def is_adult(age):
        return age >= 18

# 类调用
print(Person.is_adult(20))
# 对象调用
p = Person()
print(p.is_adult(16))

适用场景:工具函数、数学计算、逻辑判断,跟类绑在一起方便管理。


4. 属性方法 @property

作用

把方法变成属性,调用时不用加 (),还能控制私有属性读写、校验数据。

基础用法(只读)

python

运行

class Person:
    def __init__(self, name, age):
        self.name = name
        self.__age = age  # 私有属性

    # 属性方法:把方法伪装成属性
    @property
    def age(self):
        return self.__age

p = Person("小红", 18)
print(p.age)   # 像属性一样调用,不用 age()

进阶:读写属性 @age.setter

可以赋值,还能做数据校验

python

运行

class Person:
    def __init__(self, age):
        self.__age = age

    @property
    def age(self):
        return self.__age

    # 赋值设置
    @age.setter
    def age(self, value):
        if 0 < value < 150:
            self.__age = value
        else:
            print("年龄不合法")

p = Person(20)
p.age = 30    # 直接赋值
print(p.age)
p.age = 200   # 触发校验,不合法

适用场景:隐藏私有属性、数据校验、简化调用。


终极总结对照表

表格

方法类型装饰器第一个参数调用方式核心用途
实例方法无self对象调用操作对象自身属性
类方法@classmethodcls类 / 对象均可操作类属性、工厂方法
静态方法@staticmethod无类 / 对象均可工具工具函数、独立逻辑
属性方法@property无像属性一样调用方法变属性、私有属性读写校验
Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐