|
|
总结:
类由成员变量(属性)和成员函数(方法)组成。
1.1 成员变量有:公有属性(也叫类属性)和私有属性。
1.2 公有属性(类属性):既可以在类的内部被访问(通过self.varName
),也可以在类的外部被访问(通过instance.varName
),也可以通过类名被直接访问(通过className.varName
)。
1.3 私有属性: 只能在类的内部被访问(在类中通过self.__varName
访问),在类的外部均不能访问(instance.__varName
和className.__varName
都不能访问)。
1.4 获取或更改私有属性,一般通过在类的内部定义方法来达到获取和更改私有属性的作用。
1.5 在函数中定义的一般变量是局部变量。成员函数有:;公有方法、私有方法、类方法和静态方法。
2.1 公有方法:可以在类的内部被调用,也可以在类的外部通过实例对象调用,但不能通过类名直接调用。
2.2 私有方法:只能在类的内部被调用,在类的外部通过实例对象或类名均不能调用。
2.3 类方法:与公有方法类似,但是可以通过类名被直接调用。
2.4 静态方法:与类方法类似,也可以通过类名被直接调用。类方法与静态方法的区别:
3.1 定义方法时形参不同。定义类方法时需要self
作为形参;但是定义静态方法时不需要self
作为形参。(在这环境下,因为静态方法不需要传类实例作为参数,因此在调用成员变量和成员函数时不能通过如self.varName
、self.funName
这种形式调用,而需要通过类名调用)
3.2 加载资源的方式不同。类方法是动态加载资源,需要调用某个资源时才加载;而静态方法是运行时一次性加载所有资源(这也是为什么定义静态方法时不需要self
作为形参的原因)。(拓展:因此类方法占用内存小而且速度慢,而静态方法占用内存大而且速度快)
3.3 调用成员属性、成员函数的方式不同。类方法通过self.varName
的方式调用成员属性;而静态函数则通过className.varName
的形式调用成员属性。