Python 面向对象学习总结 (1)
一、类属性,实例属性,局部变量 ,类的方法,实例方法,类方法,静态方法 基础概念
1、类属性(Class attributes)也叫做类变量 (Class variables) 是放在所有方法外面的变量。
2、实例属性(Instance Attribute) 也叫实例变量 (Instance Variable)是 放在__inin__方法里的和实例方法里的变量,用self.变量名=变量名来赋值的。
3、局部变量()是放在 各种实例方法里的。不加self. 的变量。
实例属性和局部变量的区别是,是否有self.去定义和调用的。用self.表示在类实例话后,可以全局调用。但是局部变量只能在当前函数内调用, 生命周期不一样(怎么能改变局部变量的生命周期呢?)
4、类的方法不是一个类的专有名字, 顾名思义,其实就是类的几种方法。包含三种 即实例方法,类方法 ,静态方法,这个不要和类方法搞混了。
5、实例方法 (Instance Methods ),默认用 self 参数作为第一个参数的方法,没有用 @classmethod 和@staticmethod 去装饰。
6、 类方法 (Class Methods) ,用 @classmethod 装饰器进行定义,以 cls 参数作为第一个参数。
7、静态方法(静态方法 (Static Methods), 静态方法使用 @staticmethod 装饰器进行定义,不需要传递类实例或类本身作为参数。
# 对比上面的解释,来分辨这几个概念。
class MyClass:
class_variable = "This is a class variable" # 类属性
A=1 # 类属性
def __init__(self, instance_variable): # 初始化实例属性
self.instance_variable = instance_variable # 实例属性
self.B=2 # 实例属性
def instance_method(self): # 实例方法
self.C=3 #实例属性
D=4 #局部变量
print("这个是实例方法")
@classmethod
def class_method(cls): # 类方法
print("这个是类方法")
@staticmethod
def static_method(): # 静态方法
print("这个是静态方法")
# 创建实例并调用类中的方法和访问属性
obj = MyClass("Instance attribute")
print(obj.A) # 访问类属性
print(obj.instance_variable) # 访问实例属性
print(obj.B) # 访问实例属性
obj.instance_method() # 调用实例方法
MyClass.class_method() # 调用类方法
MyClass.static_method() # 调用静态方法