Python学习笔记——实例方法和静态方法
来源:互联网 发布:日工作计划软件 编辑:程序博客网 时间:2024/06/05 03:38
静态方法和实例方法
实例的方法就是在类中定义的函数
class中定义的全部是实例方法,实例方法第一个参数 self 是实例本身。在class中定义类方法,要加@classmethod;定义静态方法要加@staticmethod
类方法:方法的第一个参数都是类对象而不是实例对象(cls)
区别主要体现在两个方面:
1. 在外部调用静态方法时,可以使用”类名.方法名”的方式,也可以使用”对象名.方法名”的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
2. 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。
3. 类方法可以被对象调用,也可以被实例调用;传入的都是类对象,主要用于工厂方法,具体的实现就交给子类处理
4. 静态方法参数没有实例参数 self, 也就不能调用实例参
class Fun(object): __count = 0 def __init__(self,path=''): self.path = path Fun.__count += 1 #静态方法 @staticmethod def users(n): Fun.n = n return Fun.n #实例方法 def jobs(self,work): return Fun('%s' % work) #类方法 @classmethod def count(cls): return cls.__count #定制类(特殊方法) def __str__(self): return self.path __repr__ = __str__#调用print Fun.count()print Fun().jobs('job')print Fun.users('Tom')print Fun.count()
结果:
0
job
Tom
2
类方法和静态方法都可以被类和类实例调用,类实例方法仅可以被类实例调用。
类方法的隐含调用参数是类,而类实例方法的隐含调用参数是类的实例,静态方法没有隐含调用参数。
class Chain(object): def __init__(self,path='/users'): self.path = path def users(self,path): return Chain('%s/%s' % (self.path,path)) def __getattr__(slef,path): return Chain('%s/%s' % (self.path,path)) def __str__(self): return self.path __repr__ = __str__print Chain().users('Tom').etc.list
结果:
/users/Tom/etc/list
class Chian(object): def __init__(self,path=''): self.path = path def __getattr__(self,path): return Chain('%s/%s' % (self.path,path)) def __str__(self): return self.path def __call__(self,name): return Chain('GET %s/:%s' %(self.path,name))print Chain().users('tom').etc.list
结果
GET /users/:tom/etc/list
0 0
- Python学习笔记——实例方法和静态方法
- python学习笔记-实例方法、类方法、静态方法
- C#学习笔记-实例方法和静态方法
- Python学习笔记-静态方法和类方法
- python学习笔记-静态方法和类方法区别
- python实例方法,类方法和静态方法
- python实例方法、类方法和静态方法
- python中类方法、实例方法和静态方法
- Python的类方法、静态方法和实例化方法
- c#学习笔记--静态方法和实例方法、方法的重载、操作符的重载
- python学习笔记--类方法、对象方法、静态方法
- python中的实例方法、静态变量,静态方法、类方法、类变量和实例变量
- JavaScript 学习笔记十四 this特性,静态方法 和实例方法,prototype
- java学习笔记4--java 静态方法和实例方法的区别
- java学习——静态方法和非静态方法
- python类方法、实例方法、静态方法
- Python 静态方法 类方法 实例方法
- python实例方法,静态方法,类方法
- 初始化Outlook
- Linux 下安装 jdk-7u75-linux-x64.gz,jdk1.7.0_75,jdk1.7步骤:
- 类加载器浅谈
- java.util.IdentityHashMap.entrySet()方法实例
- Android Camera数据流分析全程记录(非overlay方式) 2013-11(转)
- Python学习笔记——实例方法和静态方法
- 用OpenCV做人脸识别和性别识别contrib(本文包含最全人脸库)
- ViewPager适配PagerAdapter的时候 instantiateItem方法报错的处理
- android为程序添加版本自动更新(转)
- 根据文件名称播放Assets资源
- collectionView 手写初始化
- 51小号 实名认证不用跑营业厅的,可在四川掌厅提交资料的哦~
- iOS 大牛博客集
- hi3518e笔记