Python---类和面向对象

面向对象的设计思想:
面向对象是基于万物皆对象这个哲学观点

面向对象和面向过程的区别:


面向过程:
在生活中:

它是一种看待问题的思维方式,在思考问题的时候,着眼问题是怎样一步一步解决的,然后亲力亲为去解决问题[类似于公司里的执行者]

在程序中:

代码是从上而下顺序执行,各个模块之间的关系尽可能简单,在功能上相对独立,程序的流程在写程序的时候就已经决定.

面向对象:
在生活中:

它是另一种看待问题的方式,它着眼于找到一个具有特殊功能的个体,然后委托这个个体去帮你完成某件事.这是更符合人类思考习惯的思想[指挥者]

在程序中:

把数据以及对数据的操作方法放在一起,作为一个相互依存的整体--对象

把同类的对象进行抽象出其共性,形成类

类中大多数数据,只能用本类的方法进行处理

类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信

程序执行的流程由用户在使用的过程中决定

使用面向对象进行开发,需要先找到具有所需功能更的对象来使用,如果这个对象不存在,那么则需要创建这么一个具有所需功能的对象

PS:面向对象只是一种思想,并不是一门编程语言.

区别总结:


a. 都是看待问题的一种思维方式,都能解决问题

b. 面向过程着眼于所有的事情亲力亲为

c. 面向对象着眼于找到一个具有特殊功能的对象,委托这个对象实现你需要实现的功能.

python语言是面向对象的程序设计语言,类和对象是面向对象的核心

类和对象
类:一个具有特殊功能的实体的集合[群体]
对象:在一个类中,一个具有特殊功能的实体,能够帮忙解决特定的问题,对象通常也被称为实例.

两者之间的关系:类用于描述某一对象的共同特征,而对象则是类的具体存在

类的定义:
class 类名:

        类体

a.python中使用class关键字定义类

b.类名只要是一个合法的标识符即可,命名规则遵循"驼峰式命名"

c.尽量使用单个或者多个有意义的单词链接而成

类的设计:
1.事物名称[类名]: 人类  (Person)

2.特征: 身高(height)  年龄(age)等 ——>名词

3.行为: 跑(run) 说话(say)  —————>动词

方法和属性的定义:


生活中描述事物的无非就是描述事物的特征和行为

python中用类来描述事物也是如此,前面已经定义了类,但是,如果只有类单独存在,没有任何意义,所以定义类其实就是定义类中的成员[成员变量和成员方法]

成员变量—>类具有的特征  例如:人—>身高,性别,体重

成员方法 —>类具有的行为  例如人—>吃喝玩乐

因此,拥有相同的(或者类似)属性和行为的对象都可以抽取出一个类

 

方法和属性的使用

实例化对象:


对象是实实在在的个体,负责去完成某件指定的事情

对象的创建的过程又被称作对象的实例化过程

语法:

对象名 = 类名()

对象调用方法和属性:

访问属性:

对象名.属性名
赋值:对象名.属性名 = 新值

访问方法
格式:对象名.方法名(参数列表)

构造函数和析构函数:
构造方法的使用:很多类都倾向于将对象创建为有初始化状态.因此类可能定义一个名为__init__()的特殊方法(构造方法),构造方法也叫做构造器,是指当实例化一个对象(创建一个对象)的时候,第一个被自动调用的方法.
class Person():
    name = ""
    age = 0
    #构造方法
    def __init__(self):
        print("构造函数被执行了")
p1 = Person


#创建对象的过程中构造函数被自动调用
#得出结论:创建对象的过程中调用了构造函数
#当未手动添加构造函数时,系统会默认提供一个无参的构造函数

 

析构函数的使用:
析构函数: del 释放对象时自动调用
class Person():
    def run(self):
        print("run")
    
    def eat(self, food):
        print("eat "+food)
    
    def __init__(self, name, age, height, weight):
        self.name = name
        self.age = age
        self.height = height
        self.weight = weight
        
     def __del__(self):
        print("这里是析构函数")

per = Person("hanmeimei", 20, 170, 55)
#释放对象
del per
#注意:对象释放后就不能再进行访问了

#在函数里定义的对象,会在函数结束时自动释放,这样可以用来减少内存空间的浪费
#其实就是作用域的问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值