一般用法
类是面向对象的一个中重要组成,让开发者能够更好的抽象业务。其基本用法如下:
class Student:
def __init__(self, no, name, age):
self.fields = {
'no': no,
'name': name,
'age': age
}
def dump(self):
for field_name in self.fields:
field_value = self.fields[field_name]
print(f'* {field_name}:{field_value}')
if __name__ == '__main__':
students = []
for i in range(0, 3):
s = NormalStudent(i, f'somebody_{i}', 20+i)
students.append(s)
for s in students:
print('')
s.dump()
# * no:0
# * name:somebody_0
# * age:20
#
# * no:1
# * name:somebody_1
# * age:21
#
# * no:2
# * name:somebody_2
# * age:22
__init__(self, params...)
为其构造方法,具体用如上。
需要注意的是,成员变量和成员方法都要通过self
来关联。这个习惯和Java不同,成员变量一定要通过self.xxx
来赋值,否则会在代码运行中各种懵逼,别问我咋知道的。
继承
class NormalStudent(Student):
def __init__(self, no, name, age):
self.fields = {
'no': no,
'name': name,
'age': age,
'type' : normal
}
if __name__ == '__main__':
students = []
for i in range(0, 3):
s = NormalStudent(i, f'somebody_{i}', 20+i)
students.append(s)
for s in students:
print('')
s.dump()
# * no:0
# * name:somebody_0
# * age:20
# * type:normal
#
# * no:1
# * name:somebody_1
# * age:21
# * type:normal
#
# * no:2
# * name:somebody_2
# * age:22
# * type:normal
分析上述代码可知,重写了构造方法,继承了dump方法,所以有了上述输出。
私有变量和私有方法
面向对象三大特征:封装、继承、多态。既然考虑到了对业务抽象为类,那必定要考虑将方法尽量的封装,常用的private声明方式如下,在变量和方法前添加__
,如下。
def __privateMethod(self):
self.__num = 0
pass