面向对象的理解
面向对象是一种设计思想
1、符合人们的思考习惯
2、把执行者变成指挥者
3、简化功能,把复杂的事情简单化
想完成一件事,找具有这样功能的对象
如果能找到,调用这个对象的功能,完成这个事
如果找不到,创建具有这样功能的对象,再调用完成这个事
类和对象
类是对事物的描述,是抽象的。
对象是类的具体体现。
类对事物的描述:属性(名词)和行为(动词)
类
类的构成
类的名称:类名
类的属性:一组数据 属性、变量
类的方法:允许对进行操作的方法 (行为) 方法
拥有相同(或者类似)属性和行为的对象都可以抽像出一个类
对象
python中,可以根据已经定义的类去创建出一个个对象
创建对象的格式为:
对象名 = 类名()
- 当创建一个对象时,就是用一个模子,来制造一个实物
“魔法”方法
在python中,形如__方法名__()
的称为魔法方法
- 魔法方法都有特殊的功能,一般自动调用
__init__()
方法
1、__init__()
方法,在创建一个对象时默认被调用,不需要手动调用
2、__init__(self)
中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递进去
3、如果在创建__init__(self)
对象时传递了2个实参,那么self作为第一个形参外还需要2个形参,例如__init__(self,x,y)
__str__()
方法
在对象转字符串时调用(如print()
),将其返回值作为转字符串的结果
__del__()方法
创建对象后,python解释器默认调用__init__()
方法;
当删除一个对象时,python解释器也会默认调用一个方法,这个方法为__del__()
方法
私有属性
如果有一个对象,当需要对其进行修改属性时,有2种方法
1、对象名.属性名 = 数据 —->直接修改
2、对象名.方法名() —->间接修改
为了更好的保存属性安全,即不能随意修改,一般的处理方式为
将属性定义为私有属性,添加一个可以调用的方法,供调用
Python中没有像C++中public和private这些关键字来区别公有属性和私有属性,它是以属性命名方式来区分。
如果在属性名前面加了2个下划线’__’,则表明该属性是私有属性,否则为公有属性(方法也是一样,方法名前面加了2个下划线的话表示该方法是私有的,否则为公有的)。
1、将属性私有化: “__属性名” 间接修改
2、对外提供可访问的方式: 获取(get)和设置(set) 根据需要提供也可以不提供
私有化也是一种封装,只能在类的内部访问,出了类就不能访问了