python 面向对象专题(一):基础(一)面向对象初识、面向对象结构、类、self、实例化对象

1. 面向对象初识

1.面向过程编程vs函数式编程
    减少了重复代码
    增强了可读性
2.函数式编程vs面向对象编程
 面向对象的第一个优点:
    对相似功能的函数,同一业务下的函数进行归类,分类
 面向对象的第二个优点:
    站在上帝的角度构建代码,类就是一个公共的模板,对象就是从模板中实例化出来的,得到对象就是得到了一切.

2 类和对象

思考:洗⾐机洗⾐服描述过程中,洗⾐机其实就是⼀个事物,即对象,洗⾐机对象哪来的呢?
答:洗⾐机是由⼯⼚⼯⼈制作出来。
思考:⼯⼚⼯⼈怎么制作出的洗⾐机?
答:⼯⼈根据设计师设计的功能图纸制作洗⾐机。
总结:图纸 → 洗⾐机 → 洗⾐服。
在⾯向对象编程过程中,有两个重要组成部分:类 和 对象。类和对象的关系:⽤类去创建⼀个对象。
2.1 理解类和对象
2.1.1 类
类是对⼀系列具有相同特征和⾏为的事物的统称,是⼀个抽象的概念,不是真实存在的事物。
特征即是属性
⾏为即是⽅法
类⽐如是制造洗⾐机时要⽤到的图纸,也就是说类是⽤来创建对象。
2.1.2 对象
对象是类创建出来的真实存在的事物,例如:洗⾐机。
注意:开发中,先有类,再有对象。

 

2. 面向对象的结构

类名:驼峰体,不要使用下划线
class Human:  # (Human后面的括号可以有(继承),也可以没有,没有的话默认继承object)
    mind = '有思想'   #  1.类的属性(静态属性/静态字段)
    def work(self):   # 2.动态方法
        print("人类都会工作")

3. 从类名的角度研究类

3.1 类名操作类中的属性

1.类名查看类中的所有方法
    print(类名.__dict__)
    
2.类名操作类的静态属性,万能的点.
    增:Human.body = "有头"
    删:del Human.mind
    改:Human.mind = "无脑"
    查:Human.language

3.2 类名调用类中的方法

一般类中的方法,不会通过类名调用
总结:一般类名就是操作类中的属性

4. 从对象的角度研究类

4.0 创建对象
对象⼜名实例。
语法
# 对象名 =  类名()

体验

class Washer():
    def wash(self):
        print('能洗衣服')

 

# 创建对象
haier1 = Washer()
# <__main__.Washer object at 0x0000018B7B224240>
print(haier1)
# haier对象调⽤实例⽅法
haier1.wash()

 

 

 

 

4.1 实例化一个对象发生的三件事(非常重要)

对象是从类中出来的,只要是类名加上(),这就是一个实例化过程,这个就会实例化一个对象
1.通过object的__new__方法,产生并返回一个内存空间。
2.自动执行类中的__init__方法,并将这个对象空间(内存地址)传给了__init__方法的第一个位置参数self。
3.在__init__ 方法中通过self给对象空间封装属性。

4.2 对象操作对象空间的属性

1.对象查询对象中所有属性。 对象.__dict__
2.对象操作对象中的单个属性。 万能的点 .

4.3 对象查看类中的属性 (注意:只能查看,不能更改)

class Human:

   mind = '有思想'
   language = '汉语'
   def __init__(self,name,sex,age,hobby):
       self.n = name
       self.s = sex
       self.a = age
       self.h = hobby

obj = Human('张三','',18,'运动')
print(obj.mind)
print(obj.language)
obj.a = 666
print(obj.a)

4.4 对象查看类中的方法

类中的方法一般都是通过对象执行的(除去类方法,静态方法外),并且对象执行这些方法都会自动将对象空间传给方法中的第一个参数self。

class Human:
   mind = '有思想'
   language = '汉语'
   def __init__(self,name,sex,age,hobby):
       self.n = name
       self.s = sex
       self.a = age
       self.h = hobby

   def work(self):
       print(self)
       print('人类会工作')

   def tools(self):
       print('人类会使用工具')

obj = Human('张三','',18,'运动')
obj.work()
obj.tools()

5. self 是什么

self其实就是类中方法(函数)的第一个位置参数,只不过解释器会自动将调用这个函数的对象传给self。
所以把类中的方法的第一个参数约定俗成设置成self, 代表这个就是对象
# 类:洗衣机 功能 洗衣服
class Washer():
    def wash(self):
        print('洗衣服')
        print(self)


# 2. 创建对象
haier1 = Washer()
# <__main__.Washer object at 0x0000018B7B224240>
print(haier1)
# haier1对象调⽤实例⽅法
haier1.wash()
haier2 = Washer()
# <__main__.Washer object at 0x0000022005857EF0>
print(haier2)

# 由于打印对象和打印self得到的内存地址相同,所以self指的是调用该函数的对象

6. 一个类可以实例化多个对象

obj1= Human('张三','',20,'美女')
obj2= Human('李四','',18,'肥女')
print(obj1,obj2)
print(obj1.__dict__)
print(obj2.__dict__)

 

 

posted @ 2020-05-09 15:30  秋华  阅读(352)  评论(0编辑  收藏  举报