Python面向对象的编程过程中,我们为类实例化了对象,并通过对象指针来访问类中对应的资源,那么这些资源大体分为三大部分,分别是字段、方法和属性,我们将这三大块统称为类的成员。
一、字段
字段可以分为静态字段、动态字段,下面通过代码展示类中的两种字段
class MyClass:
# 静态字段,属于类,多个对象共用一个静态字段
leader = "abuve"
def __init__(self):
# 动态字段,属于对象,也可以叫普通的字段,每个对象都会有自己独有的动态字段
self.name = "kevin"
动态字段在类的实例化过程中很常见,通过self为每个对象封装属于自己特有的数据,但如果类中全部采用动态字段,也会遇到一些不合理的弊端,例如下面代码:
class Company:
def __init__(self, dept, leader):
self.company_name = "Center"
self.dept = dept
self.leader = leader
def ...
if __name__ == "__main__":
it_dept = Company("IT", "Abuve")
hr_dept = Company("HR", "Kevin")
我们通过动态字段方式为对象封装了自己独有的数据,但是这里发现公司名称company_name都为“Center”,不管创建哪个部门的对象,公司名称是不变的,我们知道动态字段存放在对象中,这样每个对象就都包含了一份company_name字段,这无疑增加了程序对内存的开销,因此更合理的方式应该使用静态字段,代码如下:
class Company:
company_name = "Center"
def __init__(self, dept, leader):
self.dept = dept
self.leader = leader
def ...
if __name__ == "__main__":
it_dept = Company("IT", "Abuve")
hr_dept = Company("HR", "Kevin")
同时在字段的调用方式上,我们也要遵循一些规则:
1、静态字段,属于类,通过类来调用访问
2、动态字段,属于对象,通过对象来调用访问
对于上述代码