面向对象
认识面向对象
概念:面向对象(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)