七、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)

  

原文地址:https://www.cnblogs.com/Just-a-calm-programmer/p/12691604.html