从事嵌入式系统软硬件设计工作已有将尽20年的时间,在进行硬件目标板调试时,常需要上位机软件支持。在进行上位机软件程序的设计时,采用过VB、VB.net和C++等多种语言,偶然的机会发现Python,接触后,立刻感觉到它的强大,现在我的上位机软件编程只用Python。本系列教程将从基于硬件的上位机软件设计的角度着手,系统介绍Python语言,希望读者通过本系列教程的学习,能够对Python语言立刻学以致用,真正将所学知识应用到项目实践中。
开发环境:Visual Studio Code
操作系统:Microsoft Window 7
Python版本:3.7
参考教材:Python快速编程入门,黑马程序员,人民邮电出版社,2017年9月第1版
一、构造方法
类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用,像下面这样:
def __init__(self):
self.data = []
类定义了 __init__() 方法,类的实例化操作会自动调用 __init__() 方法。如下实例化类 MyClass,对应的 __init__() 方法就会被调用:
x = MyClass()
当然, __init__() 方法可以有参数,参数通过 __init__() 传递到类的实例化操作上。例如:
class Complex:
def __init__(self, realpart, imagpart):
self.r = realpart
self.i = imagpart
x = Complex(3.0, -4.5)
print(x.r, x.i) # 输出结果:3.0 -4.5
样例:
class people:
name = ""
age = 0
sex = "男"
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
def OutputName(self):
strOutput = "我叫" + self.name
return strOutput
def OutputAge(self):
strOutput = "今年已经" + self.age + "岁了"
return strOutput
def OutputSex(self):
if self.sex == "男":
strOutput = "我是一个阳光帅气的男孩,我生命的每一天都充满活力"
else:
strOutput = "我是一个温柔漂亮的女孩,我珍惜我生命中的每一分、每一秒"
return strOutput
def OutputResume(self):
strOutput = " " + self.OutputName() + ","
strOutput = strOutput + self.OutputAge() + ","
strOutput = strOutput + self.OutputSex() + "。"
return strOutput
def Generate(self):
p = people(self.txtName.text(), self.txtAge.text(), self.txtSex.text())
self.txtResume.setText(p.OutputResume())
二、构造方法在继承中的应用
可以在子类中直接调用父类的方法,其格式是
父类名.方法名
class people:
name = ""
age = 0
sex = "男"
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
def OutputName(self):
strOutput = "我叫" + self.name
return strOutput
def OutputAge(self):
strOutput = "今年已经" + self.age + "岁了"
return strOutput
def OutputSex(self):
if self.sex == "男":
strOutput = "我是一个阳光帅气的男孩,我生命的每一天都充满活力"
else:
strOutput = "我是一个温柔漂亮的女孩,我珍惜我生命中的每一分、每一秒"
return strOutput
def OutputResume(self):
strOutput = " " + self.OutputName() + ","
strOutput = strOutput + self.OutputAge() + ","
strOutput = strOutput + self.OutputSex() + "。"
return strOutput
class student(people):
school = ""
department = ""
def __init__(self, name, age, sex, school, department):
people.__init__(self, name, age, sex)
self.school = school
self.department = department
def OutputSchool(self):
strOutput = "通过我高中3年的不懈努力,考入了全球最出色的高等院校——" + self.school
return strOutput
def OutputDepartment(self):
strOutput = "我在该校最有发展前景的" + self.department + "就读"
return strOutput
def OutputResume(self):
strOutput = " " + self.OutputName() + ","
strOutput = strOutput + self.OutputAge() + ","
strOutput = strOutput + self.OutputSex() + "。"
strOutput = strOutput + self.OutputSchool() + ","
strOutput = strOutput + self.OutputDepartment() + "。"
return strOutput
def Generate(self):
s = student(self.txtName.text(), self.txtAge.text(), self.txtSex.text(),
self.txtSchool.text(), self.txtDepartment.text())
self.txtResume.setText(s.OutputResume())
三、方法重写
方法重写即指子类具有父类同名的方法,示例如下:
class people:
name = ""
age = 0
sex = "男"
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
def OutputName(self):
strOutput = "我叫" + self.name
return strOutput
def OutputAge(self):
strOutput = "今年已经" + self.age + "岁了"
return strOutput
def OutputSex(self):
if self.sex == "男":
strOutput = "我是一个阳光帅气的男孩,我生命的每一天都充满活力"
else:
strOutput = "我是一个温柔漂亮的女孩,我珍惜我生命中的每一分、每一秒"
return strOutput
def OutputResume(self):
strOutput = " " + self.OutputName() + ","
strOutput = strOutput + self.OutputAge() + ","
strOutput = strOutput + self.OutputSex() + "。"
return strOutput
class student(people):
school = ""
department = ""
def __init__(self, name, age, sex, school, department):
people.__init__(self, name, age, sex)
self.school = school
self.department = department
def OutputSchool(self):
strOutput = "通过我高中3年的不懈努力,考入了全球最出色的高等院校——" + self.school
return strOutput
def OutputDepartment(self):
strOutput = "我在该校最有发展前景的" + self.department + "就读"
return strOutput
def OutputResume(self):
strOutput = people.OutputResume(self)
strOutput = strOutput + self.OutputSchool() + ","
strOutput = strOutput + self.OutputDepartment() + "。"
return strOutput
def Generate(self):
s = student(self.txtName.text(), self.txtAge.text(), self.txtSex.text(),
self.txtSchool.text(), self.txtDepartment.text())
self.txtResume.setText(s.OutputResume())
四、多继承的构造方法
有了上述基础后,我们最后来看一下多继承的构造方法,示例如下:
class people:
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
def OutputName(self):
strOutput = "我叫" + self.name
return strOutput
def OutputAge(self):
strOutput = "今年已经" + self.age + "岁了"
return strOutput
def OutputSex(self):
if self.sex == "男":
strOutput = "我是一个阳光帅气的男孩,我生命的每一天都充满活力"
else:
strOutput = "我是一个温柔漂亮的女孩,我珍惜我生命中的每一分、每一秒"
return strOutput
def OutputResume(self):
strOutput = " " + self.OutputName() + ","
strOutput = strOutput + self.OutputAge() + ","
strOutput = strOutput + self.OutputSex() + "。"
return strOutput
class lesson:
def __init__(self, lesson1, lesson2, lesson3, lesson4, lesson5, lesson6):
self.lesson1 = lesson1
self.lesson2 = lesson2
self.lesson3 = lesson3
self.lesson4 = lesson4
self.lesson5 = lesson5
self.lesson6 = lesson6
def OutputLesson(self):
strOutput = " 我的学习刻苦努力,已经修完了"
strOutput = strOutput + self.lesson1 + "、"
strOutput = strOutput + self.lesson2 + "、"
strOutput = strOutput + self.lesson3 + "、"
strOutput = strOutput + self.lesson4 + "、"
strOutput = strOutput + self.lesson5 + "、"
strOutput = strOutput + self.lesson6 + "等课程,学习成绩优异"
return strOutput
class student(people, lesson):
def __init__(self, name, age, sex, school, department, lesson1, lesson2, lesson3, lesson4, lesson5, lesson6):
people.__init__(self, name, age, sex)
lesson.__init__(self, lesson1, lesson2, lesson3, lesson4, lesson5, lesson6)
self.school = school
self.department = department
def OutputSchool(self):
strOutput = "通过我高中3年的不懈努力,考入了全球最出色的高等院校——" + self.school
return strOutput
def OutputDepartment(self):
strOutput = "我在该校最有发展前景的" + self.department + "就读"
return strOutput
def OutputResume(self):
strOutput = people.OutputResume(self)
strOutput = strOutput + self.OutputSchool() + ","
strOutput = strOutput + self.OutputDepartment() + "。\r\n"
strOutput = strOutput + self.OutputLesson() + "。"
return strOutput
def Generate(self):
s = student(self.txtName.text(), self.txtAge.text(), self.txtSex.text(),
self.txtSchool.text(), self.txtDepartment.text(),
self.txtLesson1.text(), self.txtLesson2.text(), self.txtLesson3.text(),
self.txtLesson4.text(), self.txtLesson5.text(), self.txtLesson6.text())
self.txtResume.setText(s.OutputResume())
任何问题,只需在此文章的评论处留言即可,我将尽力解答,不要试图采用其它的联系方式,我一概不理会。
原创性文章,转载请注明出处CSDN:http://blog.csdn.net/qingwufeiyang12346。