面向对象
认识面向对象
概念:面向对象(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)
来源:oschina
链接:https://my.oschina.net/u/4288355/blog/3234489