#=======================================
# 《机器学习升级版》第七期 邹博 第四课 Python基础 源码4.2.class_intro.py
#=======================================
Python中class的定义格式:
class className:
def __init__(self, arg1, arg2):
#The code to initialize a "Athlete" object.
......
def func(self):
....
类中有一个特殊的成员函数:__init__(self, arg1, ....)。这是一个类的初始化函数,用于定义类的成员变量和成员函数。其中有一个特殊的关键字是self,我理解为指向自身的指针,调用成员变量和成员函数的时候前面都要加上self关键字,但类的实例调用时不用加self。在__init__函数中要定义出类中所需要的变量和函数(类似函数声明),在变量名或函数名前面加上“__”(两个下划线)表示这是个私有变量或私有函数。
类的继承:
class A(B):
def __init__(self, arg..):
B.__init__(self, arg..) #需要人为调用父类的__init__函数
......
上面的代码就表示A是B的子类,在子类的__init__函数中需要人为调用父类的__init__函数。
4.2.class_intro.py 代码笔记(与源码略有出入)
#!/usr/bin/python
# -*- coding:utf-8 -*-
class People:
def __init__(self, n, a, s): #__init__函数的第一个变量必须是self
self.name = n
self.age = a
self.__score = s #私有变量
#self.print_people() #也可以执行函数等
def print_people(self):
str1 = '%s的年龄是:%d,成绩为:%.2f' % (self.name, self.age, self.__score)
print(str1)
class Student(People): #继承People类
def __init__(self, n, a, w, cn):
People.__init__(self, n, a, w) #调用People初始化函数,传入对应参数
self.name = 'Student ' + self.name
self.classNum = cn #子类变量
def print_student(self):
str2 = '%s的年龄:%d' % (self.name, self.age)
print(str2)
print(self.classNum)
def func(p):
p.age = 11
if __name__ == '__main__':
p = People('Tom', 10, 3.14159)
p.print_people()
s = Student('Jerry', 12, 2.71828, 3)
s.print_people()
s.print_student()
func(p)
p.print_people()
输出结果为:
Tom的年龄是:10,成绩为:3.14
Student Jerry的年龄是:12,成绩为:2.72
Student Jerry的年龄:12
3
Tom的年龄是:11,成绩为:3.14
参考资料