面向对象初识
-
面向过程开发:之前学的开发过程,求一个结果,写代码为了实现这个结果。
-
面向对象开发:开发一个拥有开放性结局的程序时,不注定结果,这种情况适合这种开发方法。例如游戏,购物,结果不固定。
-
类:python中一切皆为对象,类型的本质就是类
-
类有两种作用:
-
属性引用
-
有如下例子
# class Person: # 类名
# def __init__(self,name,sex,job,hp,weapon,ad):
# # 必须叫__init__这个名字,不能改变的,所有的在一个具体的人物出现之后拥有的属性
# self.name = name
# self.sex = sex
# self.job = job
# self.level = 0
# self.hp = hp
# self.weapon = weapon
# self.ad = ad
# alex = Person('alex','不详','搓澡工',260,'搓澡巾',1)
# print(alex,alex.__dict__) # 属性的查看
# alex.name = 'alexsb' # 属性的修改
# alex.money = 1000000 # 属性的增加
# del alex.money # 属性的删除alex就是一个对象,alex = Person()这个过程是通过类获取一个对象的过程,即实例化
print(alex,alex.__dict__)
这是对人的属性的查看,可以对属性增删改查类名() 会自动调用类中的
__init__
方法 -
-
类与对象的关系
-
类:是具有相同属性和相似功能的一类事物。是一个大范围,是一个模子,它约束了事物有哪些属性,但是不能约束具体的值
-
对象/实例:是一个具体的内容,是模子的产物,它遵循了类的约束,同时给属性赋上具体的值
-
空间问题
***
:类有一个空间,存储的是定义在class中的所有名字;每一个对象又拥有自己的空间,通过对象名.__dict__
就可以查看这个对象的属性和值修改列表字典中的某个值,或者是对象的某一个属性 都不会影响这个对象字典列表所在的内存空间
-
-
对象的属性/实例变量
self.xxx这就是实例变量
-
实例化后的步骤
-
类名() 之后的第一个事儿 :开辟一块儿内存空间
-
调用
__init__
把空间的内存地址作为self参数传递到函数内部 -
所有的这一个对象需要使用的属性都需要和self关联起来--对象的初始化
-
执行完init中的逻辑之后,self变量会自动的被返回到调用处(发生实例化的地方)
-
方法初识
class Person: # 类名
def __init__(self,name,sex,job,hp,weapon,ad):
# 必须叫__init__这个名字,不能改变的,所有的在一个具体的人物出现之后拥有的属性
self.name = name # 对象的属性/实例变量
self.sex = sex
self.hp = hp
self.ad = ad
def 搓(self,dog): # 方法,又有一个必须传的参数-->self对象
dog.hp -= self.ad
print('%s给%s搓了澡,%s掉了%s点血,%s当前血量%s'%(self.name,dog.dog_name,dog.dog_name,self.ad,dog.dog_name,dog.hp))
alex.搓(小白)
__init__
方法后出现的函数定义即为一个方法,注意使用方法时,外面调用传入的函数总会比定义时少一个,因为默认传入self