avatar

目录
python面向对象编程

python是一门面向对象的编程语言,了解python面向对象设计的一些基本思想对后续更好地学习python语言十分有帮助
python中的类提供了面向对象的基本功能,定义一个python类可以使用class关键字
例如:定义一个学生类

python
1
2
3
4
class Student:
def __init__(self):
self.sno = ""
self.sname= ""

如此就完成了一个学生的类的基本定义,其中__init__()为构造函数,用于该类的初始化,该方法在类实例化时会自动调用。
对于类的调用也十分的简单,python中的类直接可以调用,不同于Java,不需要使用new关键字
例如:stu1 = Student(),这样就完成了学生类的调用。
完成调用以后,我们可以定义stu1的相关的属性,例如:stu1.sno="001",就可以定义学生一的学号,当我们调用属性时,就可以得到相应的值了:
类似的,可以定义学生一的名字,最后得到学生一的所有属性

python
1
2
3
4
5
6
7
8
9
class Student:
def __init__(self):
self.sno = ""
self.sname= ""

stu = Student()
stu.sno="001"
stu.sname = "小明"
#print(stu.sno,stu.sname)

当然,初始化函数可以带参数,类似__init__(self,param1,param2...),初始化对象,得到一个原始信息,例如:

python
1
2
3
4
5
6
7
class Student:
def __init__(self,sno,sname):
self.sno = sno
self.sname= sname

stu = Student("001","小明")
#print(stu.sno,stu.sname)

以上均输出001 小明
无论采取什么方法,在python的类中定义的方法必须带参数self,它指的是类实例对象本身,而不是类本身,在上述例子中,self分别指向Student的实例stu1,和stu2。
关于类的继承:
单继承:

python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#类定义
class people:
def __init__(self,name,age):
self.name = name
self.age = age
def speak(self):
print("%s 说: 我 %d 岁。" %(self.name,self.age))

#单继承示例
class student(people):
def __init__(self,name,age,grade):
#调用父类的构函
people.__init__(self,name,age)
self.grade = grade
#覆写父类的方法
def speak(self):
print("%s 说: 我 %d 岁了,我在读 %s 年级"%(self.name,self.age,self.grade))

s = student('小明',18,"大一")
s.speak()

结果为小明 说: 我 18 岁了,我在读 大一 年级
多继承:
在上述示例的基础上,再增加一个类:Major,代表选课情况

python
1
2
3
4
5
6
7
8
9
class Major:
def __init__(self,major):
self.major= major
def speak(self):
print("%s 说: 我在读 %s 年级,学的是%s专业"%(self.name,self.grade,self.major))
class sample(Major,student):
def __init__(self,name,age,grade,major):
student.__init__(self,name,age,grade)
Major.__init__(self,major)

以上示例结果为:小李 说: 我在读 大三 年级,学的是会计学专业
方法重写
如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法,实例如下:

python
1
2
3
4
5
6
7
8
9
10
11
class Parent:        # 定义父类
def myMethod(self):
print ('调用父类方法')

class Child(Parent): # 定义子类
def myMethod(self):
print ('调用子类方法')

c = Child() # 子类实例
c.myMethod() # 子类调用重写方法
super(Child,c).myMethod() #用子类对象调用父类已被覆盖的方法

super() 函数是用于调用父类(超类)的一个方法。
执行以上程序输出结果为

python
1
2
3
调用子类方法
调用父类方法
>>>

在python中定义私有方法和属性,只需要要属性或者方法钱加两条上下划线就可以。以上是今天学习的笔记,涉及的知识点还很少,需要学习更多知识还需借助互联网以及书籍。

文章作者: J.M.
文章链接: https://www.masj.top/post/59dd15a2.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Jason的小世界