一、面向对象技术简介:
- 类Class:用来描述具体相同的属性和方法的对象的集合。定义了该集合中每个对象所共有的属性和方法。--(类是一个模型,一个种类,一个蓝图)
- 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。--(就是类的实例)
- 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
- 类方法:
@classmethod def shuoming(cls): cls代表的就是当前这个类 pass 1、不需要实例化就可以调用的,直接类名.xxx self.shuoming()也可以调用 2、调用不了实例方法和实例变量
- 实例方法:函数入参有self的,就是实例方法,必须实例化之后才能使用。
- 实例:实例就是对象。
- 实例化:创建一个类的实例,类的具体对象。
- 实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。--(如果变量前面加了self的话,在这个类里面,其他的函数都可以使用这个变量。必须得实例化之后才可以用。)
- 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。--(是公共的,谁都可以用,不需要实例化,直接在类里面定义的变量,不需要实例化就可以使用,self.xxx)
- 局部变量:定义在方法中的变量,只作用于当前实例的类。
- self:本类对象
- 静态方法:只是写在类里面而已,它调用不了类方法、类变量、实例方法、实例变量,通过类名.xx使用;但类方法、实例方法可以调用它
- 属性方法:看起来像变量的一个方法。
类的执行顺序:
类实例化 -> 构造函数-> 程序执行完->析构函数
1、举例:将买车的过程化零为整为买车处
class BuyCar:#类名一般用大写字母定义,这个类含义为买车处,化零为整 def shop(self):#在类中定义函数,会自动加入self,带self方法的必须实例化才能用 print('4s店') def baoxian(self): print('保险公司') def shuiwuju(self): print('税务局') def cheguansuo(self): print('车管所') xiaowang = BuyCar()# BuyCar()类名加上括号就是实例化,xiaowang就是一个实例又叫对象 # BuyCar.shop()#类不能直接用,会报错TypeError: shop() missing 1 required positional argument: 'self' xiaowang.shop()#实例调用类中的方法 xiaowang.baoxian() xiaowang.shuiwuju() xiaowang.cheguansuo()
2、举例:上帝造人
class Person: country = 'China'#country为类变量,公共的,谁都可以用 def __init__(self,name,leg=2):#构造函数,类在实例化的时候,自动执行 # 加上self,在整个类里其他函数都可以用 self.name = name#属性 self.leg = leg print('self的内存地址',id(self)) def __del__(self):#析构方法,类实例被销毁的时候自动执行析构方法里面的代码 print('什么时候执行到这里的方法呢') def fly(self):#方法 print('%s会飞'%self.name) self.bird = '猫头鹰'#self不只可以加到init中,可以加到类里的其他方法中 def eat(self): print('%s会吃饭'%self.name) print('我要吃%s'%self.bird) def la(self): print('拉了%s次' % self.count) def say(self): print('我的名字是【%s】,我有【%s】条腿'%(self.name,self.leg)) print('国籍是%s'%self.country)#必须用self.country,直接写country会报错