序
最近的忙碌,进阶比较缓慢
前面的三篇主要讲Python的基础部分,第四篇为Python高级部分面向对象
记录点
面向对象-封装(2019-8-22)
- 类 - class
- 对象
class Student(): #定义一个类
name = '' #定义变量
age = 0
def print_file(self): #定义一个方法
print("name:"+self.name)
print('age:'+str(self.age)) #输出
student =Student() #实例化一个对象
student.print_file() #调用方法
注:self 在每个方法括号中都必须写上,这个相当于java中的 this 关键字。
但 self按严格来说它不是python的关键字,self可以是任何符合的字符串,只是python官方推荐使用 self 而已
类与对象:类像一个模板一样,可以产生各种各样的对象
- 构造函数
def __init__(self,name): #构造函数
self.name=name
self.source= 0
print(name) #调用实例变量 方式1
print(self.name) #调用实例变量 方式2
print(self.__class__.name)#调用类变量 方式1
部分特性和java差不多
类变量和实例变量(2019-8-26)
实例变量:通过实例对象调用的变量和在构造函数中定义过的 如上述构造函数类代码
print(name) #调用实例变量 方式1
print(self.name) #调用实例变量 方式2
类变量:通过类名直接调用的,或者在实例函数中使用 self.class.变量名调用的 如上述代码
print(self.__class__.name) #调用类变量 方式1
Student.name #调用类变量 方式2
方法
实例方法
就是一般的定义方法,关联实例对象
def show(self):
pass
注:关键字 pass 相当于一个占位 在还没想好逻辑的时候可以使用它 反正代码报错
类方法
方法上使用装饰器 @classmethod 以及必传参数 cls
#类方法
@classmethod
def plus_sum(cls):
cls.sum +=1
print(cls.sum) #调用类变量
注: cls 字符串 和self的作用差不多,只是只能用在类方法上
在类方法中调用类变量的方式与实例方法不同
self.__calss__.name #实例方法调用类变量
cls.name #类方法调用类变量
静态方法
方法上使用装饰器 @staticmethod,和类方法的区别就是不用传cls, 一般不推荐使用
#静态方法
@staticmethod
def plus_sum():
pass
要点:一般保证数据的安全不能直接给数据赋值,要在方法中进行完成,方法中可以进行判断,体现了python的面向对象的封装性
私有
私有方法
在方法前面加 ‘__’ 双下划线
def __sum(self):
pass
私有方法外部强行调用会报错
私有变量
在变量前面加 ‘__’ 双下划线
__name = '小米'
无法进行私有变量调用,
student = Student() #实例化
print(student.__name)
因为python的动态机制,这里其实是重新定义了一个变量 __name
可以使用 _dict _ 来查看当前对象的所以变量信息
print(student.__dict__) #输出详细
可以从输出的内容中可以看到,原来的变量变成了 类名加变量名 如:_Student__name
面向对象-继承(2019-8-28)
python的继承特性和java的继承特性差不多,相信有java继承的会更好的理解
父类
#父类 2019-8-28
class Human():
sum = 0
def __init__(self,name,age):
self.name=name
self.age=age
def show(self):
print("父类的方法")
子类
from m4 import Human #导入父类 m4为文件名 Human为类名
class Student(Human): #继承父类
def __init__(self,school,name,age):
self.school=school
#调用父类的构造函数 需要加入self 方式一
Human.__init__(self,name,age)
#方式二 使用super关键字
super(Student,self).__init__(name,age)
def out(self):
#调用父类方法
super(Student,self).show()
print("加油")
ss = Student('社会','44',5)
print(ss.name)
print(ss.age)
ss.out()
调用父类的两种方式
方式一
#调用父类的构造函数 需要加入self 方式一
Human.__init__(self,name,age)
方式二
使用关键字 super
#方式二 使用super关键字
super(Student,self).__init__(name,age)
面向对象-多态(- - -)
…
完整代码获取: 点击此处.
github地址:RemainderTime.
个人博客地址:梦麟繁花(ps:还在完善中…)
简书:RemainderTime
网易云音乐ID: remaindertime
扑向未来!
加油!