- class Role(object):# 执行时之后就存在内存里
- n='我是类里的 n' #类变量, 保存在类的内存里
- list=[]
- name='我是类里的 name'
- def __init__(self,name,role,weapon,life_value=100,money=15000):
- #构造函数
- #作用: 在实例化时做一些类的初始化工作, 开辟一块内存
- self.name=name #实例变量 (静态属性), 作用域是实例本身, 保存在实例的内存里
- self.role=role
- self.weapon=weapon
- self.life_value=life_value
- self.money=money
- def shot(self):# 类的方法, 功能 (动态属性)
- print('%s is shooting...' % self.name)
- def got_shot(self):
- print('%s is getting shot...' % self.name)
- def buy_gun(self,gun_name):
- print('%s has bought %s' % (self.name,gun_name))
- print(Role.n,Role.name)
- role1=Role('James','police','AWM') #实例化, 生成一个对象
- #调用 role 的同时也将 role1 传进去了, 类里面函数自带的 self 就是为了传实例名 role1
- #实际上实例化的过程是是这样的:
- #role1=Role(role1,'James','police','AWM')
- #role1.name='James'
- #role1.role='Police'
- #role1.weapon='AWM'
- #role1.shot()# 实际上是 Role=shot(role1)
- #role1.got_shot()# 实际上是 Role=got_hot(role1)
- #role1.buy_gun()# 实际上是 Role=buy_gun(role1,gunnamme)
- #与调用函数不同
- #调用函数,-》执行,-》返回结果
- #role1=role.__init__() return 地址
- #更改, 重新赋值
- role1.name='Paul'
- #加新属性
- role1.bullet_proof=True
- #删掉属性
- del role1.weapon
- print(role1.n,role1.name)# 先在实例里面找变量, 再在类里面找这个变量
- role1.shot()
- role1.got_shot()
- role1.buy_gun('AK47')
- role1.list.append('r1')
- role2=Role('Bronny','police','AWM')
- role2.list.append('r2')
- print(Role.list)
- role1.n='改类变量'# 实际上是在 role1 里加了一个 n 变量
- print(role1.n)
- print(role2.n)
- print(Role.n)
结果:
类变量的作用: 大家共用的属性
- #!/usr/bin/env python
- # -*- coding:utf-8 -*-
- # Author:James Tao
- #类变量:
- #作用: 大家共用的属性
- class Person:
- cn='中国'
- def __init__(self,name,age,addr,cn='China'):
- self.name=name
- self.age=age
- self.addr=addr
- self.cn=cn
- p1=Person('James',23,'Beijing')
来源: http://www.bubuko.com/infodetail-2886755.html