python是一门面向对象的编程语言,了解python面向对象设计的一些基本思想对后续更好地学习python语言十分有帮助
python中的类提供了面向对象的基本功能,定义一个python类可以使用class
关键字
例如:定义一个学生类
1 2 3 4
| class Student: def __init__(self): self.sno = "" self.sname= ""
|
如此就完成了一个学生的类的基本定义,其中__init__()
为构造函数,用于该类的初始化,该方法在类实例化时会自动调用。
对于类的调用也十分的简单,python中的类直接可以调用,不同于Java,不需要使用new
关键字
例如:stu1 = Student()
,这样就完成了学生类的调用。
完成调用以后,我们可以定义stu1
的相关的属性,例如:stu1.sno="001"
,就可以定义学生一的学号,当我们调用属性时,就可以得到相应的值了:
类似的,可以定义学生一的名字,最后得到学生一的所有属性
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 = "小明"
|
当然,初始化函数可以带参数,类似__init__(self,param1,param2...)
,初始化对象,得到一个原始信息,例如:
1 2 3 4 5 6 7
| class Student: def __init__(self,sno,sname): self.sno = sno self.sname= sname
stu = Student("001","小明")
|
以上均输出001 小明
无论采取什么方法,在python的类中定义的方法必须带参数self
,它指的是类实例对象本身,而不是类本身,在上述例子中,self分别指向Student的实例stu1,和stu2。
关于类的继承:
单继承:
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,代表选课情况
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)
|
以上示例结果为:小李 说: 我在读 大三 年级,学的是会计学专业
方法重写
如果你的父类方法的功能不能满足你的需求,你可以在子类重写你父类的方法,实例如下:
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中定义私有方法和属性,只需要要属性或者方法钱加两条上下划线就可以。以上是今天学习的笔记,涉及的知识点还很少,需要学习更多知识还需借助互联网以及书籍。