博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
静态方法和类成员方法
阅读量:5805 次
发布时间:2019-06-18

本文共 2501 字,大约阅读时间需要 8 分钟。

hot3.png

静态方法和类成员方法分别正在创建时分别装入 staticmethod 类型和 classmethod 类型的对象
使用装饰器(decorator)语法
'''#老方法__metaclass__ = typeclass MyClass:    def smeth():                      #静态方法定义没有self参数,且能够被类本身直接调用        print 'This is a static method'    smeth = staticmethod(smeth)       #静态方法在创建时装入 staticmethod 类型    def cmeth(cls):                   #类方法在定义时,需要名为 cls 的类似于 self 的参数,可以用类的对象调用        print 'This is a class method'    cemth = classmethod(cmeth)        #类成员方法在创建时换入 classmethod 类型'''#装饰器#它能对任何可调用的对象进行包装,既能够用于方法也能够用于函数#使 @ 操作符,在方法(或函数)的上方将装饰器列出,从而指定一个或者更多的装饰器(多个装饰器在应用时的顺序与指定顺序相反)__metaclass__= typeclass MyClass:    @staticmethod  #定义静态方法    def smeth():        print 'This is a static method'    @classmethod   #定义类方法    def cmethd(cls):        print 'This is a class method',cls    def instancefun(self):   #实例方法        print '实例方法'    def function():          #普通方法        print '普通方法'mc =  MyClass()MyClass.smeth()              #类和对象都可以调用静态方法mc.smeth()MyClass.cmethd()             #类方法也可以直接被类调用MyClass().cmethd()           #类方法被对象调用mc.instancefun()             #对象调用实例方法mc.cmethd()                  #对象调用类方法#MyClass.instancefun()       #类调用实例方法,报错#mc.function()               #对象调用普通方法,报错
x
 
1
'''
2
#老方法
3
__metaclass__ = type
4
 
5
class MyClass:
6
 
7
   def smeth():                      #静态方法定义没有self参数,且能够被类本身直接调用
8
       print 'This is a static method'
9
   smeth = staticmethod(smeth)       #静态方法在创建时装入 staticmethod 类型
10
 
11
   def cmeth(cls):                   #类方法在定义时,需要名为 cls 的类似于 self 的参数,可以用类的对象调用
12
       print 'This is a class method'
13
   cemth = classmethod(cmeth)        #类成员方法在创建时换入 classmethod 类型
14
 
15
'''
16
 
17
#装饰器
18
#它能对任何可调用的对象进行包装,既能够用于方法也能够用于函数
19
#使 @ 操作符,在方法(或函数)的上方将装饰器列出,从而指定一个或者更多的装饰器(多个装饰器在应用时的顺序与指定顺序相反)
20
 
21
__metaclass__= type
22
 
23
class MyClass:
24
 
25
   @staticmethod  #定义静态方法
26
   def smeth():
27
       print 'This is a static method'
28
 
29
   @classmethod   #定义类方法
30
   def cmethd(cls):
31
       print 'This is a class method',cls
32
 
33
   def instancefun(self):   #实例方法
34
       print '实例方法'
35
 
36
   def function():          #普通方法
37
       print '普通方法'
38
 
39
 
40
mc =  MyClass()
41
 
42
MyClass.smeth()              #类和对象都可以调用静态方法
43
mc.smeth()
44
MyClass.cmethd()             #类方法也可以直接被类调用
45
MyClass().cmethd()           #类方法被对象调用
46
mc.instancefun()             #对象调用实例方法
47
mc.cmethd()                  #对象调用类方法
48
 
49
#MyClass.instancefun()       #类调用实例方法,报错
50
#mc.function()               #对象调用普通方法,报错
51
 

转载于:https://my.oschina.net/u/1785519/blog/1582486

你可能感兴趣的文章
CORS 跨域问题, 以及作为api server 的正确配置, 后台 nginx 配置
查看>>
loadrunner录制脚本、回放脚本遇到的问题
查看>>
16进制数至字符串转换
查看>>
如何使用Python3.4连接MySQL
查看>>
客户端禁用cookie情况下的URL重写
查看>>
Codeforces Round #325 (Div. 2) A. Alena's Schedule 水题
查看>>
排序算法之快速排序(java实现)
查看>>
(转)树的深度优先与广度优先遍历
查看>>
LoadRunner支持的IE版本
查看>>
VS XML注释
查看>>
Java CSV操作(导出和导入)
查看>>
Language Tool ,a plugin for TeXStudio
查看>>
基于OWIN ASP.NET WebAPI 使用OAUTH2授权服务的几点优化
查看>>
模板 可持久化字典树
查看>>
Composer命令详解
查看>>
Android开发学习:[15]自动导入包
查看>>
一个有趣的swap函数
查看>>
Burp Suite抓包、截包和改包
查看>>
ViewHolder模式超简洁写法
查看>>
【推荐】2016年不得不读的九本好书
查看>>