万物皆对象
面向对象 oop :封装的方法
由面向过程演变过来的,是早期的编程概念,面向对象优势多
面向过程:一步步做的去做的
面向对象:一个个对象去做的
面向过程,一步步的去实现 提前封装
面向对象,是交给谁去做,封装成一个方法
两个核心的概念 类 对象
类 :共同特征或者行为的事物统称
对象: 具体的内容 王家的狗 李家的狗
定义类
class 类名:
属性
功能
类名:驼峰命名法(每个单词的首字母大写)
属性:特征
功能:方法 def 方法名(self):
第一个面向对象的程序
设计几个猫
属性:白色、4条腿、20kg,
功能:会抓老鼠,会吃鱼的角色
class Cat:
# 类属性
cat_color='白色'
cat_foot=4
cat_weight=20
# 类方法
def eat(self):
print('小猫爱吃鱼')
def catch(self):
print('小猫会抓老鼠')
要创建具体的猫 变量名=类() 实例化对象
具体的猫 调用什么功能 就有什么功能
tom=Cat()
tom.catch()
print(tom.cat_color)
print(tom.cat_foot)
对象.方法名 获得功能 对象.属性 能获得特征
再创建一只猫
jack=Cat()
jack.eat()
打印出创建的两只猫的相关信息
print(tom)
print(id(tom))
print(jack)
print(id(jack))
函数 一定会有一个self 谁吃鱼 格式化
def eat(self):
print('{}小猫爱吃鱼'.format(self.name))
def catch(self):
print('小猫会抓老鼠')
这个 self 代表的创建的对象 因为有这个self 能够区分调用的对象是谁
在类外面定义属性
默认创建的猫都是白色 20 4 当需要创建一直体重为10KG的猫,需要进行单独的改变
tom=Cat()
tom.name='TOM'
tom.cat_weight=10
tom.eat()
print(tom.cat_weight)
jack=Cat()
jack.name='JACK'
jack.eat()
print(jack.cat_weight)
print(jack.cat_color)
类外定义属性与类内定义属性的区别
在类里面定义 固定死了
在类外面定义 只针对某个创建对象的属性改变
对象.属性 获得属性的方法 1.对象.属性 2.类.属性
print(Cat.cat_color)
__init__初始化函数
作用 只要创建类对象的时候,就会执行这个init
class Cat:
def init(self,color,foot,name):
self.color=color
self.foot=foot
self.name=name
def eat(self):
print(f'{self.name},{self.color}小猫爱吃鱼')
self.catch()
def catch(self):
print('小猫会抓老鼠')
实例化 创建一个对象
tom1=Cat('大红色',4,'小翠花')
tom1.eat()
ja=Cat('黑色',3,'小玉玉')
ja.eat()
str 对象的描述信息
class Cat:
def init(self,color,foot,name):
self.color=color
self.foot=foot
self.name=name
def eat(self):
print(f'{self.name},{self.color}小猫爱吃鱼')
def str(self):
return f'这是一个对象的描述信息:{self.name}小猫爱吃鱼的故事'
c=Cat('红色',4,'小翠花')
print(c)
del 对象被销前会被调用的函数
class Cat:
def init(self, color, foot, name):
self.color = color
self.foot = foot
self.name = name
def eat(self):
print(f'{self.name},{self.color}小猫爱吃鱼')
def __del__(self):
print(f'{self.name}小猫走了')
c=Cat('大红色',4,'笑笑')
print('测试数据')
怎么创建类 属性 方法
方法里面一定会加上self self代表创建的对象 模板
具体的创建对象 实例化对象 对象名=类()
属性 方法 对象名.属性 对象名.方法()
init函数
作用:创建对象的时候就执行init函数
str函数
作用:返回对象的描述信息
del函数
作用:销毁对象