定义面向对象:
类:具有相同属性和技能的一类事物 对象: 类中个例具体的表现 实例化; 类 ---->对象的过程
一, 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性,而类有两种属性:静态变量和动态变量
定义方式====>class Person: # 注意类名的首字母要大写
mind = '有思想' # 变量,静态变量,静态字段
animal = '高级动物'
faith = '有信仰'
def __init__(self,name,age,sex)
self.name = name
self.age = age
self.sex = sex
def work(self): # 方法.函数.动态变量
print(self)
print('人类都会工作')
def shop(self):
print('人类可以消费')
res = Person('高永杰','27','男') ==================================>类名+()的这个过程,就是实例,创建一个对象
注意要点:(1):类名+()产生了一个实例,
(2)自动执行类中__init__方法,将对象空间传值给__init__的self参数 理解:会自动生成一个对象的内存空间,作为参数传值给__init__的self.
(3): 给对象封装相应的属性
二, 类中不同角度的增删改查
(1) 类名的角度操作类中的静态变量 (类名+__dict__)
print(Person.__dict__ ) ===> 查询类中所有的内容, 所得结果是个字典
Person.__dict__ ['mind'] ===>这样也能查
对类中单个的变量进行增删改查 (类名+变量名) 万能的
print(Person.mind) ===.>查
Person.money = '运用货币' ===>增
Person.mind = '无脑的' ===>改
del Person.ming ===> 删
操作类中的函数方法工作中基本不用. 注意类名调用函数时候需要传参
(2)对象的角度操作函数中的静态变量,也可以对对象进行增删改查 上面的例子产生了一个res对象
pritn(res.__dict__) ====>查询对象中所有的内容
pritn(res.__dict__['name']) ====>查询对象中指定的内容
print(res.mind) = ===> 查询类中静态变量 不可以对类中的变量进行删改增
三, 当程序创建一个类,会开辟一个类名称空间,包含了静态变量关系,和函数的内存地址,(函数内的程序不占用内存的
当程序运行到 类名+() 时会自动创建一个实例化的内存空间,与类的名称空间是各自独立的,
对象与对象之间是互相独立的,本类对象不能直接调用其他类函数的方法,通过组合可以实现
查询顺序:
对象属性: 先从对象空间找,如果找不到,再从类空间找,再找不到,再从父类空间找.....
类名属性: 先从本类空间找,如果找不到,再从父类找........
统计注册对象个数的方法:
class Count:
count = 0
def __init__(self):
Count.count = self.count + 1
obj1 = Count()
obj2 = Count()
print(Count.count)
四, 对象组合:
组合: 给一个类的对象封装一个属性,这个属性是另一个类的对象.,,
函数中提前封装好属性,这个函数的参数接的是另一个类中的对象,
谁来调用这个函数,就将另一个类中的对象作为参数封装给调用者这个对象,