世界万物节皆可分类,世界万物皆可对象,只要对象,肯定属于某种类,只要对象,肯定有属性
类:具有相同属性、方法对象的抽象
对象:类的实例化,每个对象可有不同属性
类的三大特性:
封装:将数据方法放到类里,类就变成了一个胶囊或者容器
继承:一个类派生出子类,父类的属性、方法自动被子类继承
多态:对不同类的对象发出相同的消息将会有不同的行为,‘一个接口,多种实现’
函数:
构造函数:主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,一个类可以有多个,根据参数个数的不同或参数类型的不同来区分它们
析构函数:在实例释放、销毁的时候执行的,通常用来做一些收尾工作,比如关闭数据库连接,打开的临时文件
私有属性:加上“__”即可
self.role = role
修改后:
self.__role = role#j就变成了私有的
私有方法:
def shot(self):
print('shooting...')
修改后:
def __shot(self):#加上__就成了私有方法,外部无法访问
print('shooting...')
示例:
class Role():#定义类
def __init__(self,name,role,weapon,life_value=100,money=150):
#构造函数,在实例化时做一些类的初始化的工作
self.name = name
self.role = role
self.weapon = weapon
self.life_value = life_value
self.money = money
def shot(self):
print('shooting...')
def got_shot(self):
print('ah..,i got shot...')
def buy_gun(self,gun_name):
print('%s just bought %s'%(self.name,gun_name))
def __del__(self):#析构函数
print('%s chedi over了'%self.name)
r1 = Role('wuyifan','police','AK47')#实例化,初始化一个类,并存储到内存
#上面的r1,执行构造函数的内容:
#r1 = Role._init_() return x345234
#r1=Role(r1,'wuyifan','police','15000'
#r1.name = 'wuyifan'
#r1.role='police'
#r1.money=15000
#self,用来接收r1,这个变量名,这个比较重要
r1.buy_gun('ak11')#等于Role.buy_gun(r1),所以每个方法都要有self,保存谁调用我,调用这个类