类的学习笔记(二)类的方法

方法的定义:和函数一样但是需要self作为第一个参数

类的方法也分为公有方法和私有方法:

私有方法:不能被外部的类和方法调用,私有方法的定义和私有属性的定义一样,在方法的前面添加:“__”双下划线就可以了

类方法:被classmethod()函数处理过的函数,能被类所调用,也能被对象所调用(是继承的关系)

静态方法:相当于“全局函数“,可以被类直接调用,可以被所有实例化对象共享,通过staticmethod()定义 静态方法没有"self" 语句;

self参数:用于区分函数和类的方法(必须有一个self),self参数标示指向对象本身

 

 1 #!/usr/bin/env python 
 2 #coding:utf-8
 3 
 4 class Ren:
 5       name = "Jesse";
 6       __age  = "23";
 7       work = "sa";
 8       __money = "100" 
 9       def run(self,city):
10           self.name #调用类内部的属性,如果写成print name 将会写成出现错误  
11           print "Hey jesse and all!,I am from %s" % city
12           print "#"*50
13       def say(self):
14           print self.__money
15           self.__pra() #调用类内部的私有方法,好处是将数据隐藏起来,提高安全性。
16           print "#"*50
17       def __pra(self):
18           print "我是一个私有方法,只能在类内部被调用,不能外部调用"
19 
20       #1假如有多个私有属性:我们去获它的值,可以利用形参进行操作
21       def get(self,var):
22           if var == "age":
23              return self.__age 
24           else:
25              return self.__monkey
26       #2:修改私有属性
27       def set(self,x):
28            self.__age = x
29       #使用类方法,@符号是一个装饰器,动态方法是临时加载 速度上可能慢些,但是节省资源
30       @classmethod 
31       def Jesse(self):
32           print "类方法"
33           print "#"*50
34       
35       #预先加载好,保存在内存中,运行速度超快,但是占内存
36       @staticmethod 
37       def zhang():
38           print "静态方法"
39 
40 P=Ren()
41 P.name #调用类的属性
42 P.run('beijing')  #调用类的方法
43 #print P.__monkey
44 P.say()
45 
46 print "1:取类内部的多个私有属性,可以使用def方法和下面的操作获取"
47 Age = P.get('age')
48 print Age
49 
50 #修改并获取类的私有属性
51 P.set('24')
52 print P._Ren__age
53 #类方法调用和静态方法
54 Ren.zhang()
55 Ren.Jesse()

 

posted @ 2013-07-01 16:31  study-notes  阅读(160)  评论(0编辑  收藏  举报