面向对象举例
解决吃啤酒鸭的问题
第一种方式(面向过程):
1)养鸭子
2)鸭子长成
3)杀
4)作料
5)烹饪
6)吃
第二种方式(面向对象):
1)找个卖啤酒鸭的人
2)给钱 交易
3)吃
4)胖6斤
区分类和对象
01).
奔驰汽车 类
奔驰smart 类
张三的那辆奔驰smart 对象
02).
狗 类
大黄狗 类
李四家那只大黄狗 对象
03).
水果 类
苹果 类
红苹果 类 红富士苹果 类
我嘴里吃了一半的苹果 对象
1、定义类
格式:
class 类名:
方法列表
# 经典类
class Hero: # 经典类(旧式类)定义形式
#新式类
class Hero(object): # 新式类定义形式
def info(self):
print("英雄各有见,何必问出处。")
案例:
class Hero(object): # 新式类定义形式
def info(self):
print("英雄各有见,何必问出处。")
# object 是Python 里所有类的最顶级父类;
# info 是一个实例方法,第一个参数一般是self,表示实例对象本身,当然了可以将self换为其它的名字,其作用是一个变量 这个变量指向了实例对象
2、创建对象
格式:
对象名1 = 类名()
对象名2 = 类名()
对象名3 = 类名()
案例:
由上图可以得知,方法内的self与定义的对象内存地址是一样的
3、添加和获取对象的属性
案例:
4、魔法方法
__init__
通常用来做属性初始化 或 赋值 操作__str__
通常返回一个字符串,作为这个对象的描述信息__doc__
查看类的文档说明,也就是类的注释__del__
当使用del() 删除变量指向的对象时,则会减少对象的引用计数。如果对象的引用计数不为1,那么会让这个对象的引用计数减1,当对象的引用计数为0的时候,则对象才会被真正删除(内存被回收)。
5、继承
在程序中,继承描述的是多个类之间的所属关系
- 单继承 :子类只继承一个父类
案例:
- 多继承:子类继承多个父类
- 子类重写父类的同名属性和方法
- 多层继承
- 调用父类方法super()