1 class Role(object):#执行时之后就存在内存里 2 n='我是类里的n' #类变量,保存在类的内存里 3 list=[] 4 name='我是类里的name' 5 def __init__(self,name,role,weapon,life_value=100,money=15000): 6 #构造函数 7 #作用:在实例化时做一些类的初始化工作,开辟一块内存 8 self.name=name #实例变量(静态属性),作用域是实例本身,保存在实例的内存里 9 self.role=role 10 self.weapon=weapon 11 self.life_value=life_value 12 self.money=money 13 14 def shot(self):#类的方法,功能(动态属性) 15 print('%s is shooting...' % self.name) 16 17 def got_shot(self): 18 print('%s is getting shot...' % self.name) 19 20 def buy_gun(self,gun_name): 21 print('%s has bought %s' % (self.name,gun_name)) 22 23 print(Role.n,Role.name) 24 role1=Role('James','police','AWM') #实例化,生成一个对象 25 #调用role的同时也将role1传进去了,类里面函数自带的self就是为了传实例名role1 26 #实际上实例化的过程是是这样的: 27 #role1=Role(role1,'James','police','AWM') 28 #role1.name='James' 29 #role1.role='Police' 30 #role1.weapon='AWM' 31 #role1.shot()#实际上是Role=shot(role1) 32 #role1.got_shot()#实际上是Role=got_hot(role1) 33 #role1.buy_gun()#实际上是Role=buy_gun(role1,gunnamme) 34 35 #与调用函数不同 36 #调用函数,-》执行,-》返回结果 37 #role1=role.__init__() return 地址 38 39 #更改,重新赋值 40 role1.name='Paul' 41 42 #加新属性 43 role1.bullet_proof=True 44 45 #删掉属性 46 del role1.weapon 47 48 print(role1.n,role1.name)#先在实例里面找变量,再在类里面找这个变量 49 role1.shot() 50 role1.got_shot() 51 role1.buy_gun('AK47') 52 role1.list.append('r1') 53 54 role2=Role('Bronny','police','AWM') 55 role2.list.append('r2') 56 print(Role.list) 57 58 role1.n='改类变量'#实际上是在role1里加了一个n变量 59 print(role1.n) 60 print(role2.n) 61 print(Role.n)
结果:
类变量的作用:大家共用的属性
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # Author:James Tao 4 5 #类变量: 6 #作用:大家共用的属性 7 class Person: 8 cn='中国' 9 def __init__(self,name,age,addr,cn='China'): 10 self.name=name 11 self.age=age 12 self.addr=addr 13 self.cn=cn 14 15 p1=Person('James',23,'Beijing')