类的学习笔记(二)类的方法
方法的定义:和函数一样但是需要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()
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步