1. 程式人生 > >面向物件程式設計-類變數與例項變數

面向物件程式設計-類變數與例項變數

 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')