美文网首页极客
Python高级之面向对象(四)

Python高级之面向对象(四)

作者: RemainderTime | 来源:发表于2019-09-25 09:12 被阅读0次

最近的忙碌,进阶比较缓慢
前面的三篇主要讲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


扑向未来!
加油

相关文章

  • 动手理解Python的引用、赋值、拷贝

    Python是一门面向对象的高级编程语言,相较于其他面向对象的编程语言,Python在面向对象的路上走得更远,即,...

  • 营销比赛二三事

    Python面向对象编程三大特性调研 Python面向对象之封装 在Python中,没有类似 private 之类...

  • Python高级之面向对象(四)

    序 最近的忙碌,进阶比较缓慢前面的三篇主要讲Python的基础部分,第四篇为Python高级部分面向对象 记录点 ...

  • Python从入门到精通

    Python语法的三个阶段 Python基础语法函数是编程 Python进阶语法面向对象编程 Python高级语法...

  • 廖雪峰python3 教程

    观其大纲 1 python基础 2 函数 3 高级特性 4 函数式编程 5 模块 6 面向对象编程 7 面向对象高...

  • 三、python面向对象

    1.面向对象基础 类和对象(类和实例) 其实python面向对象的概念和c++、java等高级语言没什么区别,只是...

  • python面向对象学习笔记-01

    学习笔记 # 0,OOP-Python面向对象 - Python的面向对象 - 面向对象编程 - 基础 -...

  • Python 面向对象编程

    Python 面向对象编程(一) Python 面向对象编程(一) 虽然Python是解释性语言,但是它是面向对象...

  • pythonx1_面向对象2

    面向对象 高级 === 动态添加属性python可以动态为对象绑定属性,但是不会影响到同类的其他对象。 cl...

  • Python进阶核心知识点(1) - 一切皆对象

    我们都知道python是面向对象的高级编程语言,在学习Python的过程中也经常听到在python中一切皆对象这种...

网友评论

    本文标题:Python高级之面向对象(四)

    本文链接:https://www.haomeiwen.com/subject/vuegectx.html