1、上帝的思想 ,什么是面向对象?
面向对象是一门编程思想
面向过程编程思想:
-
面向过程编程思想: 核心是 “过程” 二字,过程指的是解决问题的步骤,即先干什么再干什么! 基于该编程思想编写程序,就好比在设计一条工厂流水线,一种机械式的思维方式。
优点: 将复杂的问题流程化,进而简单化
缺点: 牵一发而动全身,程序的可扩展性差。
注意: 编程思想仅仅是一门思想,与任何的技术无关。
-
面向对象编程思想: 注意: 要将自己当做一个上帝!!! 核心是 “对象” 二字,对象指的是 “特征与技能” 的结合体。 基于该编程思想编写程序,就好比在创造世界,一种 “上帝式” 的思维方式。
优点: 可扩展性高。
缺点: 编写程序的复杂程度比面向过程高。
2、初始类和对象
-
什么是类
类指的是类型,类别。
在两种角度去看待: - 现实世界中: - 先有一个个的对象,经过社会的文明发展,随之总结出类。
对象是实际存在的,而类抽象产生的。
在程序中: - 必须先有类,再通过“调用类,产生对象”。
在python中,用变量表示特征,用函数表示技能,因而具有相同的特征和技能的一类事物就是‘类’,
-
如何定义类
如何写类并产生对象: - 先从现实世界中通过一个个对象总结出类。 -
然后再定义类,后调用类产生对象。
类的定义:class Person: #class 类名:注意类名后面不要括号 类体
-
对象的产生:
调用类产生对象
对象则是这一类事物中具体的一个
类名 + () 调用类产生对象 类的名称空间在定义时产生,对象的名称空间在调用类时产生。
调用类产生对象的过程称之为类的实例化,对象称之为类的一个实例。
由对象来调用类内部的函数,称之为对象的绑定方法。
类中数据属性(类中的变量): 类中属性是给对象使用的,对象引用类中的属性,指向的都是类中同一个内存地址。
类中的方法(类中的函数): 类中的方法是给对象使用的,
由不同的对象来调用就会将方法绑定给不同的对象, 并且会将对象当做第一个参数传入
__init__
。
类的两种作用:属性引用和实例化
#属性引用
class Person:
role = '中国人' #类属性----静态属性
def walk(self): #这里的函数叫做方法-----动态属性
#注意:self必须写
print('person is walking ...')
print(Person.role) #查看类属性
print(Person.walk) #查看类方法 , 用类名去调用方法名,打印出来的是内存地址
#中国人
#<function Person.walk at 0x000001D109431378>
#实例化
class Person:
role = '中国人'
def __init__(self,name,sex):
self.name=name
self.sex=sex
def walk(self):
print('person is walking')
lt = Person('leiting',21) #实例化:类名(参数1,参数2) 类名()就等于在执行Person.__init__()
print(lt.name) #直接查看属性 对象名.属性名
print(lt) #返回的是一个对象
lt.walk() #调用方法 ,对象名.方法()
#leiting
#<__main__.Person object at 0x000002C679CA84E0>
#person is walking
对象的两种作用:查看属性和调用方法
- 对象名字的查找顺序
1.对象.属性,会先找对象自己的。
2.若对象没有,会去找类的。
3.若类没有,则会报错。
查看类与对象的名称空间 类.__dict__
对象.__dict__
print(People.__dict__)
print(p_obj.__dict__)
3、self
类的实例化对象本身
self:在实例化时自动将对象实例本身传给__init__
的第一个参数
你也可以给它起个别的名字,但是一般正常人都不会这么做,因为你改了别人就不认识了。
注意:def __init__(self): 这句话可以写也可以不写,只要有参数参进来的时候就必须得写
def 方法名(self):这里的self必须得写