面向对象
面向过程和面向对象的区别:
面向过程:根据业务逻辑从上到下写代码
面向过程编程最易被初学者接受,其往往用一长段代码来实现指定功能,开发过程的思路是将数据与函数按照执行的逻辑顺序组织在一起,数据与函数分开考虑。
面向对象(object-oriented ;简称: OO)
至今还没有统一的概念 我这里把它定义为: 按人们认识客观世界的系统思维方式,采用基于对象(实体)的概念建立模型,模拟客观世界分析、设计、实现软件的办法。
面向对象编程(Object Oriented Programming-OOP) 是一种解决软件复用的设计和编程方法。
这种方法把软件系统中相近相似的操作逻辑和操作应用数据、状态,以类的型式描述出来,以对象实例的形式在软件系统中复用,以达到提高软件开发效率的作用。
类和对象
类的含义
人以类聚 物以群分。具有相似内部状态和运动规律的实体的集合(或统称为抽象)。 具有相同属性和行为事物的统称。
对象的含义:
某一个具体事物的存在 ,在现实世界中可以是看得见摸得着的。可以是直接使用的
类和对象的关系:一个变形金刚模型就是一个类,而下面的各种的擎天柱、大黄蜂就是一个一个的对象
类的构成:
类(Class) 由3个部分构成
类的名称:类名
类的属性:一组数据
类的方法:允许对进行操作的方法 (行为)
定义类和对象
创建对象:
当创建一个对象时,就是用一个模子,来制造一个实物 。
类是创建实例对象的模板,可以创建很多个实例对象。
创建的格式为:
对象名 = 类名()
调用对象的方法:
对象.方法名()
self和init方法
从创建多个对象引入self:
某个对象调用其方法时,Python解释器会把这个对象作为第一个参数传递给self.
self通俗的话讲,就是谁调用这个方法就是谁。
就像生活中谁拿起了一个自我介绍的卡片,自我介绍的时候就是谁。
class Cat(object):
def __init__(self,name,age):
print("调用__init__方法")
self.name = name
self.age = age
def eat(self):
print("%s在吃"%self.name)
def drink(self):
print("%s在喝水"%self.name)
def printinfo(self):
print("%s的年龄是%d"%(self.name,self.age))
lanmao = Cat("蓝猫",24)
lanmao.printinfo()
lanmao.eat()
lanmao.drink()
hongmao = Cat("虹猫",20)
hongmao.printinfo()
魔法方法
"魔法"方法id()和__str__()
打印id()
如果把tom使用print进行输出的话,会看到什么信息?
定义__str__()方法
当使用print输出对象的时候,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据
class Person(object):
def __init__(self,name,age):
print("调用了__init__方法")
self.name = name
self.age = age
def printinfo(self):
print("%s的年龄是%d"%(self.name,self.age))
def __str__(self):
return "%s的年龄是%d"%(self.name,self.age)
andy = Person("安迪",25)
andy.printinfo()
print(andy)