面向对象基础
一、类和对象
类和对象的关系:用类去创建(实例化)一个对象
在开发中,先有类再有对象
1.类是对一系列具有相同特征和行为的事务的统称,是一个抽象的概念,不是存在的事物。
特征即是属性
行为即是方法
1.1定义类
python2中类分为:经典类和新式类
语法:
class 类名():
代码
......
注意:类名要满足标识符命名规则,同时遵循大驼峰命名习惯。
2.创建对象
对象又名实例。
语法:
对象名 = 类名()
#1.体验类和对象 #创建类 class Washer(): def wash(self): print('洗衣服') #创建对象 haier = Washer() #验证成果 print(haier) #使用wash功能--实例方法/对象--对象名.函数名() haier.wash()
'''
输出:
<__main__.Washer object at 0x000001FCBBCE8400>
洗衣服
'''
输出对象,输出的是内存地址
3.类里面的self
self指的是调用该函数的对象。
class Washer(): def wash(self): print('洗衣服') print(self) haier = Washer() print(haier) haier.wash() ''' <__main__.Washer object at 0x000002C856CD8400> 洗衣服 <__main__.Washer object at 0x000002C856CD8400> '''
由于打印对象和打印self得到的内存地址相同,所以self指的是调用该函数的对象
4.一个类可以创建多个对象
class Washer(): def wash(self): print('洗衣服') print(self) haier1 = Washer() haier2 = Washer() print(haier1) haier1.wash() print() print(haier2) haier2.wash() ''' 输出: <__main__.Washer object at 0x000002597DB28400> 洗衣服 <__main__.Washer object at 0x000002597DB28400> <__main__.Washer object at 0x000002597DB38580> 洗衣服 <__main__.Washer object at 0x000002597DB38580> '''
结论:
一个类可以创建多个对象
多个对象都调用函数时,self的内存地址不相同
5.添加和获取对象属性
属性即是特征,比如:洗衣机的长宽高,颜色,重量...
对象属性既可以在类外面添加和获取,也可以在类里面添加和获取
5.1在类外面添加和获取对象属性
添加语法: 对象名.属性名=值
获取语法:对象名.属性名
class Washer(): def wash(self): print('洗衣服') print(self) haier1 = Washer() haier1.width = 300 haier1.height = 500 print(haier1.width) print(haier1.height) ''' 输出: 300 500 '''
5.2在类里面获取对象属性
class Washer(): def wash(self): print('洗衣服') print(self.width) print(self.height) haier1 = Washer() haier1.width = 300 haier1.height = 500 haier1.wash() ''' 输出: 洗衣服 300 500 '''
二、魔法方法
在python中,__xx__()的函数叫做魔法方法,指的是具有特殊功能的函数。
1. __init__()
__init__()方法的作用:初始化对象。
class Washer(): def __init__(self): self.width = 300 self.height = 500 def print_info(self): #在类里面调用实例方法 print(self.width,self.height) haier1 = Washer() haier1.print_info() ''' 输出: 300 500 '''
注意::
__init__()方法 ,在创建一个对象时默认被调用,不需要手动调用
__init__(self)中的self参数,不需要开发者传递,python解释器会自动把当前的对象引用传递过去。
1.1带参数的__init__()
class Washer(): def __init__(self,width,height): self.width = width self.height = height def print_info(self): #在类里面调用实例方法 print(self.width,self.height) haier1 = Washer(300,500) haier1.print_info() ''' 输出: 300 500 '''
2.__str__()
当使用print输出对象时,默认打印对象的内存地址。如果定义了__str__()方法,那么就会打印从这个方法中return的数据
class Washer(): def __init__(self,width,height): self.width = width self.height = height def __str__(self): return '说明书' def print_info(self): #在类里面调用实例方法 print(self.width,self.height) haier1 = Washer(300,500) haier1.print_info() print(haier1) ''' 输出: 300 500 说明书 '''
3.__del__()
当删除对象时,python解释器也会默认调用__del__()
class Washer(): def wash(self): self.width = 300 def __del__(self): print('对象已删除') haier = Washer() ''' 输出: 对象已删除 '''