zoukankan      html  css  js  c++  java
  • Python之面向对象

    编程范式:面向过程编程、面向对象编程(OPP)、面向函数编程。

    面向对象

    • 类(Class)
      • 一类拥有相同属性、方法的对象的抽象
    • 对象(Object)
      • 一个对象即是一个类的实例化后实例,一个类必须经过实例化后方可在程序中调用,一个类可以实例化多个对象

    面向对象特性

    • 封装
      • 第一层意义:创建类和对象时,分别创建两者的名称空间。只能通过类名加“.”或者obj.的方式访问里面的名字;
      • 第二层意义:类中把某些属性和方法隐藏起来,或者定义为私有,只在类的内部使用,在类的外部无法访问,或者留下少量的接口(函数)供外部访问;
      • 根据职责将属性和方法封装到一个抽象的类中
    • 继承
      • 一个类可以派生出子类,在这个父类里定义的属性、方法自动被子类继承
      • 实现代码的重用,相同的代码不需要重复的编写
    • 多态
      • 多态不同的子类对象调用相同的父类方法,产生不同的执行结果
      • 多态可以增加代码的灵活度,以继承和重写父类方法为前提是调用方法的技巧,不会影响到类的内部设计

    面向对象编程

    最简单的面向对象编程,self是为了给类传入参数liming:

    class man(): 
    	def say(self):
    		print("Hello!")
    
    liming = man() #类实例化成对象
    liming.say() #本质上是man.say(),self接收liming
    #输出
    Hello!

      

    如何给类传入参数?在类中有一个__init__函数,添加如下代码:

    class man(): #man是类名
    	def __init__(self,name): #构造函数,在实例化时做一些类初始化的工作
    		self.name = name #实例变量,赋值给实例
    
    	def say(self):
    		print("%s,say hello!" % (self.name))
    
    liming = man("liming")
    liming.say()
    
    zhangsan = man("zhangsan")
    zhangsan.say()
    #输出
    liming,say hello!
    zhangsan,say hello!

      

    实例变量

    self.name = name就是实例变量(静态属性),赋值给实例,作用域是实例本身。

    class man():
       def __init__(self,name):
          self.name = name
    

      

      

    类方法

    def say()就是类的方法(动态属性),类的功能。

    class man():
       def __init__(self,name):
          self.name = name
    
       def say(self):
          print("%s,say hello!" % (self.name))
    

      

    类变量

    version就是类变量,它可以不需要实例化就调用,也可以实例化进行调用。(如果出现实例与类中重名问题,先找实例变量,再找类变量)

    class man():
       version = "1.0.0"
       def __init__(self,name):
          self.name = name
    
    print(man.version) 
    liming = man("liming")
    print(liming.version)
    

      

    类变量的用途:大家共有的属性,节省内存。如果生成上千上万个实例的话,实例变量会被创建上千上万个,虽然达到的效果一样。

    class man():
    	version = "1.0.0"
    	def __init__(self,name,version= "1.0.0"):
    		self.name = name
    

      

    析构函数

    在实例释放、销毁的时候执行的,通常用于做一些收尾工作,如关闭数据库连接、关闭打开的临时文件等。

    class man():
        	def __del__(self):
    		pass
    

      

    私有方法与私有属性

    私有:只有类中内部可以访问,外部不能访问。

    不是私有属性/方法的话,外部是可以进行访问和修改的。

    class man():
    	def __init__(self,name):
    		self.name = name
    		self.passwd = "123456"
    
    liming = man("liming")
    print(liming.passwd)
    liming.passwd="abc123456"
    print(liming.passwd)
    #输出
    123456
    abc123456
    

      

    私有属性/方法在属性名/方法名前面加上__符号,不允许类外进行访问和修改,只能通过类中的函数对私有属性进行修改。

    class man():
    	def __init__(self,name):
    		self.name = name
    		self.__passwd = "123456"
    
    	def changepass(self,newpasswd):
    		self.__passwd = newpasswd
    		print(self.__passwd)
    
    
    liming = man("liming")
    #没有liming.passwd/liming.__passwd属性
    #只能通过一下changepass方法来查看或修改内部属性
    liming.changepass("abc123456")

    #输出
    abc123456

      

  • 相关阅读:
    必知必会 | Android 性能优化的方面方面都在这儿
    上周热点回顾(1.19-1.25)团队
    上周热点回顾(1.12-1.18)团队
    如何在博客园的markdown编辑器中输入数学公式团队
    上周热点回顾(1.5-1.11)团队
    上周热点回顾(12.29-1.4)团队
    上周热点回顾(12.22-12.28)团队
    云计算之路-阿里云上-寒流来袭:2014年12月23日21:45-23:15网站故障团队
    上周热点回顾(12.15-12.21)团队
    【活动】加班一整年了,程序员们,你们还好吗?团队
  • 原文地址:https://www.cnblogs.com/endust/p/12316752.html
Copyright © 2011-2022 走看看