面向对象细致了解
面向对象编程(Object Oriented Programming )简写OOP相比较函数,面向对象是更大的封装,根据职责在一个对象中封装多个方法1.在完成摸一个需求前,首先要确定职责 — 要做的的事情(方法)2.根据职责确定不同的对象,在对象内部封装不同的方法(多个)3.最后完成代码,就是顺序的让不同的对象调用不同的方法面向对象的特点:1.注重对象和职责,不同的...
面向对象编程(Object Oriented Programming )简写OOP
相比较函数,面向对象是更大的封装,根据职责在一个对象中封装多个方法
-
1.在完成摸一个需求前,首先要确定职责 — 要做的的事情(方法)
-
2.根据职责确定不同的对象,在对象内部封装不同的方法(多个)
-
3.最后完成代码,就是顺序的让不同的对象调用不同的方法
面向对象的特点:
-
1.注重对象和职责,不同的对象承担不同的职责
-
2.更适合应对复杂的需求变化,是专门应对复杂项目开发,提供的固定套路
-
3.需要在面向过程的基础上,在学习一些面向对象的语法
类和对象
类和对象是面向对象编程的两个核心概念
类:
-
类 是对一群具有 相同特征 或者 行为 的事物的一个统称,是抽象的,不能直接使用
特征 被称为 属性 行为 被称为 方法
-
类 就相当于制造飞机时的 图纸,是一个 模板,是 负责创建对象的 对象:
对象 是由类创建出来的一个具体存在,可以直接使用
-
是由哪个类创建出来的 对象,就拥有在 哪一个类 中定义的:
属性
方法 -
对象就相对于 图纸制造的飞机
-
在程序开发中,应该先有类,再有对象
类和对象的关系
-
类是模板, 对象是根据类这个模板创建出来的,应该先有类,再有对象
-
类只有一个,而,对象有很多个
-
不同的对象之间的属性可能会各不相同
-
类中定义了什么属性和方法,对象中就有什么属性和方法,不可能多,也不可能少
类的设计
在程序开发中,要设计一个类,要满足三个要素:
-
1.类名 这类事物的名字,满足大驼峰命名法
大驼峰命名法: 1.每个单词的首字母大写 2.单词与单词之间没有下划线
-
2.属性 这类事物具有什么样的特征
-
3.方法 这类食物具有什么样的行为
类名的确定
-
名词提炼法 分析整个业务流程,出现的名词,通常就是找到的类
属性和方法的确定 -
对 对象的特征描述,通常可以定义成属性
-
对象具有的行为(动词),通常可以定义为方法
提示:需求中没有涉及的属性或者是方法在设计类时,不需要考虑
面向对象基础语法
-
dir内置函数
-
使用内置函数dir传入标识符/数据,可以查看对象内的所有属性及方法
提示:_ _方法名 __ 格式的方法是python提供的内置方法/属性
验证了函数也是对象,对象是由对象的方法或是属性的
def aaa():
pass
print(dir(aaa()))
#结果:['__bool__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
引用的概念:
-
在面向对象开发中,引用的概念是同样适用的!
-
·在python中使用类创建对象之后,tom变量中仍然记录的是对象在内存中的地址
-
·也就是tom变量引用了新建的猫对象
-
·使用print输出对象变量,默认情况下,是能够输出这个变量引用的对象是由哪一个类创建的对象,以及在内存中的地址(16进制表示)
提示:在计算机中,通常使用16进制表示内存地址·十进制和十六进制都是用来表达数字的,只是表示的方式不一样 ·十进制和十六进制的数字之间可以来回转换 ·%d 可以以10进制输出数字 ·%x 可以以16进制输出数字
class Cat:
def eat(self):
print("小猫哎吃鱼")
def drink(self):
print("小猫要喝水")
tom = Cat()
tom.eat()
tom.drink()
print(tom)
print("%d"%(id(tom))) #%d打印的是10进制的
print("%x"%(id(tom))) #%X打印的是16进制的
#结果 (计算机中喜欢用16进制表示地址)
# 小猫哎吃鱼
# 小猫要喝水
# <__main__.Cat object at 0x03161330>
# 51778352
# 3161330
更多推荐
所有评论(0)