具体代码例程就不写了
面向过程:根据业务逻辑从上到下写代码
面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程.
面向对象能实现的功能,面向过程也能实现,往往程序的代码量都比较大,如果用面向过程的方式实现则代码冗余且不已升级,使用面向对象将数据与功能进行封装在中大程序开发中首先考虑使用
类和对象
一、概念
面向对象编程的2个非常重要的概念:类和对象
类,制造产品的图纸,想象成模具
对象,制造出的产品
类就是创建对象的模板,只有创建了类,才能够通过它创建出对象
class Person:#类(人)
def __init__(self, name, age):
= name
self.age = age
# 遍历打印所有姓名-年龄
def print_info(self):
print("姓名:", , " 年龄:", self.age)
Person("王老师", 20) # 执行完之后返回值就是对象的引用
二、类的结构
类(类) 由3个部分构成
类的:类名名称
类的:一组数据属性
类的:允许对进行操作的方法 (行为)方法
狗类的设计
类名:狗
属性:品种 、毛色、性别、名字、 腿儿的数量
方法(行为/功能):叫 、跑、咬人、吃、摇尾巴
三、创建类
class 类名:
方法列表
定义类时有2种形式:新式类和经典类
object是 里所有类的最顶级父类;Python
nfo是一个实例方法,第一个参数一般是,表示实例对象本身,当然了可以将换为其它的名字,其作用是一个变量 这个变量指向了实例对象selfself
# class Hero: # 经典类(旧式类)定义形式
# class Hero():
class Hero(object): # 新式类定义形式
# 方法
def info(self):
print("我真的会谢。")
四、创建对象
变量名 = 类名()
函数的调用方式:
函数名(实参)
实例方法的调用
实例对象.实例方法名(实参)
# class Hero: # 经典类(旧式类)定义形式
# class Hero():
class Hero(object): # 新式类定义形式
def set_info(self):
self.age=0
=""
# 方法
def info(self):
print("我真的会谢。")
def test2(self, age):
print("age=%d" % age)
def test3(self, score1,score2, score3):
return (score1 + score2 + score3) / 3
a = Hero()#创建对象
a.age=18
print(a.age)
a.test2(22)
a.info()# . 表示选择属性或者方法
b=a.test3(1,2,3)
print(b)
二、实例属性
定义方式1
对象名.属性名
class Hero(object):
pass
# 创建对象
hero = Hero()
# 给对象设置属性(通俗的说就是:给hero标记的实例对象添加变量且赋值)
= "王老师"#给对象添加额外的属性
hero.age = 18#给对象添加额外的属性
print()
定义方式2
在实例方法中定义
class 类名(object):
def 方法名(self):
self.实例属性名 = 数据
class Hero(object):
def init(self):
self.age ="18"
="wang"
# 创建对象
hero = Hero()
hero.init()# 调用方法,从而让第3,4行被执行,从而完成实例对象的属性添加初始化,否则直接调用这个是不行的 print(hero.age)
print(hero.age)#打印对象原有属性
用类创建出来的对象,我们一般称之为"实例对象"
实例方法,就是对象中的函数,实现了功能
实例属性,就是对象中的变量,实现了存储数据
-init-方法
之前的代码我们发现想要让对象拥有、属性,就必须要调用方法
比如
# 创建对象jia_fei
jia_fei = Cat()
# 调用方法,设置属性
jia_fei.set_info("加菲猫", 18)
能否直接创建对象的时候给对象初始化数据呢。
创建对象后,Python会自动调用一个特殊的方法名字叫,一般情况下我们会在这个方法中完成对象属性的设置__init__
class 类名(object):
def __init__(self):
pass
init方法会在对象创建完毕后,自动调用,无需我们自己调用__init__
class person(object):
def __init__(self, new_name, new_age):
= new_name
self.age = new_age
def introduce(self):
print("名字是:%s, 年龄是:%d" % (, self.age))
# 创建对象tom
tom = person("wang", 30)
# 调用实例方法
tom.introduce()
注意:
在类内部获取 属性 和 实例方法,通过获取self
在类外部获取 属性 和 实例方法,通过对象名获取
如果一个类有多个对象,每个对象的属性是各自保存的,都有各自独立的地址
但是实例方法是所有对象共享的,只占用一份内存空间。类会通过来判断是哪个对象调用了实例方法self