1.面向对象
#结构上理解:分两部份。
class A: name = 'alex' # 静态属性,静态变量,静态字段。 def func1(self): # 函数,动态属性,方法。 pass
#函数vs面向对象:
1.函数封装一个功能,面向对象封装多个相关的功能。
2.面向对象抽象,他是一种理想,站在上帝的角度去理解与他。
3.程序可扩展,对象都是一个个独立的,耦合性,差异性。
2.类,对象
类:具有相同属性或者功能的一类实物
对象:是类的具体体现。
3.类名,对象的使用
#一个公共框架,一个公共模型。
# class Person: # walk_way = '直立行走' # animal = '高级动物' # language ='语言' # def eat(self): # print('该吃吃,该喝喝,啥事别往心里去') # def work(self): # print('人类都需要工作')
类名:
1.查看类中所有属性及方法__dict__
# print(Person.__dict__) # print(Person.__dict__['language'])
2.查看,(增删改)类中的某个,某些属性用万能的点(.)
# print(Person.animal) # 查 # print(Person.language)
3.改
# Person.animal = '低级动物' # 改
4.增
# Person.name = 'alex' # 增 # print(Person.name)
5.删
# del Person.walk_way # 删 # print(Person.__dict__)
#操作方法:一般不通过类名操作。
对象:给对象封装属性的。
def __init__(self,name,age,eye): # 功能:给对象封装属性的。 self.name1 = name self.age1 = age self.eye1 = eye
实列化过程:
class Person: animal = '高级动物' walk_way = '直立行走' language = '语言' def __init__(self,name,age,eye): # 功能:给对象封装属性的。 self.name1 = name self.age1 = age self.eye1 = eye def eat(self): # print(self) print('该吃吃,该喝喝,啥事别忘心里搁') def work(self): print('人类都需要工作。。。') # obj = Person('alex',1000,'小眼睛') # 这个过程是一个实例化过程,他会实例化一个对象(他会在内存实例化一个对象空间)。 # print(obj) # print(obj.name1)
#实列化过程内部进行了三个阶段:
1.在内存中开辟了一个对象空间
2.自动执行类中的__init__方法,并且将对象空间自动传给self参数,其他参数手动传入。
3.执行__init__方法 给对象空间封装相应的属性。
#对象
对象操作对象空间
对象查看对象空间所有属性 __dict__
对象操作对象的某个属性 增删改查 万能的点.
# obj.sex = '男' # 增 # del obj.eye1 # 删 # obj.eye1 = '大一点' # 改 # print(obj.name1) # print(obj.__dict__)
对象操作类空间的属性 只能查
对象操作类空间的方法
print(obj)
print(obj.eat())
4.类名称空间,对象名称空间
#公用模板,公共框架
class GameRole: rule = '游戏规则' def __init__(self,area,nickname,hp,ad): self.area = area self.nickname = nickname self.hp = hp self.ad = ad def attack(self): print('谁施展了一个攻击') def pen(self): self.pen=10000 gailun = GameRole('德玛西亚','草丛伦',1000,75) yasuo = GameRole('艾欧尼亚','托儿索',500,150) penzi = GameRole('中国','键盘侠',10,100) penzi.pen() print(penzi.__dict__)
1.属性名 先从自己空间去找,没有此属性他会通过类对象指针从类去找, 类中找不到,会从父类去找。
2.对象只能查看类中的属性,不能增删改类中的属性。、
3.类不能调用对象的属性。
4.同一个类实例化出来的对象之间是不能互相访问的。
5.不同类实例化的对象有可能互相访问。
6.给对象封装属性:__init__ 任意位置。