zoukankan      html  css  js  c++  java
  • 七、Python入门-面向对象

    面向对象

    认识面向对象

      概念:面向对象(Object Oriented)是软件开发方法

      特征:封装 继承 多态

    类的创建

      类包括属性和方法。

      属性包括实例变量和类变量

    类的实例化

      实例化是指在面向对象的编程中,把用类创建对象的过程称为实例化。是将一个抽象的概念类,具体到该类实物的过程

    self关键字和初始化方法

      self:隐式将对象作为参数传递self,所以在实例化对象时不需要传递,表示当前对象

    #7.2.类的创建
    class Dog(object):
    
        typee="宠物" #类变量
    
        #初始化方法
        def __init__(self, name,age,color):        #self表示当前对象
            self.name = name    #实例变量(属性)
            self.age = age
            self.color = color
    
        #普通方法    
        def eat(self):
            print(self.name,"啃骨头!")
    
        def run(self,speed):
            print("{0}{1}跑路".format(self.name,speed)) #格式化输出
            print(self.name+speed+"跑路")
            #↑相当于print(dog.name+speed+"跑路")    
    
    #7.3.实例化对象 && 7.4.self关键字和初始化方法
    dog=Dog("小黑",3,"白色")        #隐式将dog传递给self
    #访问属性
    print(dog.name)
    print(dog.age)
    print(dog.color)
    #设置属性
    dog.color="黑色"        
    print(dog.color)
    #调用方法
    dog.eat()
    dog.run("飞快的")

    类的封装

      私有:__bal  只允许内部访问,提高安全性,并没有完全私有化

    class Card(object):
    
        def __init__(self, num,pwd,bal):
            self.num = num    #卡号
            self.pwd = pwd    #密码
            self.__bal = bal    #余额
    
        def save(self):
            print("存款!")
    
        def getBal(self,numm,pwdd):
            if(numm==self.num and pwdd==self.pwd):
                return self.__bal
            else:
                return "输入错误"    
    
    card=Card("1001","123456",1000)    #开卡
    
    #访问私有属性
    print(card.getBal("1001","123123"))    
    print(card.getBal(card.num,card.pwd))    
    print(card._Card__bal)            #python提供直接访问的方法        

    类的继承和多态

      继承:子类(派生类)继承父类(基类)的属性和方法  

      多态:相同方法名,不同的方法实现(重写) 

    #继承
    class Animal(object):    #Animal继承object
    
        def __init__(self, color):
            self.color = color
    
        def eat(self):
            print("吃!")
    
        def run(self):
            print("跑!")
    
    
    #不调用父类的init
    class Dog(Animal):    #Dog继承Animal
        def __init__(self, name,hobby):    #同名,重写
            self.name=name
            self.hobby=hobby    
    
        def eat(self):        #同名,重写
            print("啃骨头")
    
    dog=Dog("小黑","读书")        #调用的是自己的__init__
    dog.eat()                    #调用的是自己的eat
    dog.run()                    #调用父类的run
    
    
    #调用父类的init
    class Dog2(Animal):    #Dog2继承Animal
        def __init__(self, name,hobby,color):    
            super(Dog2, self).__init__(color)    #调用父类的初始化函数
            self.name=name
            self.hobby=hobby    
    
        def eat(self):        
            print("我也啃骨头")
    
    
    dog2=Dog2("小黑","读书","黑色")        
    print(dog2.color)
    
    
    #多态
    def Eat(obj):
        obj.eat()
    
    animal=Animal("黄色")
    Eat(animal)
    Eat(dog)
    Eat(dog2)

      

  • 相关阅读:
    python IDE安装-mac
    tokudb引擎安装-2
    MariaDB10.2.X-新特性2-支持check约束and with as
    MariaDB10.2.X-新特性1-支持分析函数
    MySQL5.7表空间加密
    MySQL 5.7 SYS scheme解析
    tcpdump抓SQL
    pt-online-schema-change
    查看锁信息
    onlineDDL测试
  • 原文地址:https://www.cnblogs.com/Just-a-calm-programmer/p/12691604.html
Copyright © 2011-2022 走看看