Python中class attribute术语的正式定义是什么?
Python中“类属性(class attribute)”的正式定义
在Python的官方语境里,**attribute(属性)**是覆盖范围极广的术语,指与对象(包括类对象和实例对象)绑定的任何命名实体——不管这个实体是变量、方法,还是通过装饰器定义的属性,都属于attribute的范畴。
具体到类相关的属性:
- **类属性(class attribute)**正式定义为直接绑定到类对象本身的成员,包括:
- 类变量:定义在类体中、不属于任何方法的变量,比如
class MyClass: x = 10里的x - 类的方法:包括实例方法、类方法(
@classmethod)、静态方法(@staticmethod)——本质上这些方法是可调用的类属性 - 用
@property等装饰器定义的类层面属性
- 类变量:定义在类体中、不属于任何方法的变量,比如
- 绑定到类实例的成员,比如
__init__里定义的self.y = 20中的y,被称为实例属性(instance attribute)。日常交流中有人会把它笼统归为类相关属性,这也是理解分歧的来源。
之所以会有“attribute只指变量”的误解,是因为很多人习惯把方法单独区分,但在Python的设计逻辑里,方法本身也是一种对象,和变量一样是类或实例的命名成员,完全符合attribute的定义。
举个直观的代码例子:
class Demo: # 类变量(类属性) class_val = "我是类变量" def __init__(self): # 实例变量(实例属性) self.instance_val = "我是实例变量" # 实例方法(类属性) def instance_func(self): return "我是实例方法" # 类方法(类属性) @classmethod def class_func(cls): return "我是类方法"
这里Demo.class_val、Demo.instance_func、Demo.class_func都是类的属性;而Demo().instance_val是实例属性。
内容的提问来源于stack exchange,提问作者24n8
相关产品推荐
相关产品推荐

