静态,类,实例方法,字典

1、python其实有3个方法,即实例方法,类方法(classmethod),静态方法(staticmethod)

def foo(x): 一般函数
  print "executing foo(%s)"%(x)

class A(object):

  def foo(self,x): 实例方法
    print "executing foo(%s,%s)"%(self,x)

  @classmethod
  def class_foo(cls,x):类方法
    print "executing class_foo(%s,%s)"%(cls,x)

  @staticmethod
  def static_foo(x): 静态方法
    print "executing static_foo(%s)"%x

a=A()

这里先理解下函数参数里面的self和cls.这个self和cls是对类或者实例的绑定,对于一般的函数来说我们可以这么调用foo(x),这个函数就是最常用的,它的工作跟任何东西(类,实例)无关.对于实例方法,我们知道在类里每次定义方法的时候都需要绑定这个实例,就是foo(self, x),为什么要这么做呢?因为实例方法的调用离不开实例,我们需要把实例自己传给函数,调用的时候是这样的a.foo(x)(其实是foo(a, x)).类方法一样,只不过它传递的是类而不是例,A.class_foo(x).注意这里的self和cls可以替换别的参数,但是python的约定是这俩,还是不要改的好.

对于静态方法其实和普通的方法一样,不需要对谁进行绑定,唯一的区别是调用的时候需要使用a.static_foo(x)或者A.static_foo(x)来调用

a对象和A类    实例方法   类方法        静态方法
a = A()    a.foo(x)    a.class_foo(x)   a.static_foo(x)
A        不可用    A.class_foo(x)   A.static_foo(x)

suppose 假设,猜想

2字典,访问不存在的键,则会报错,可以使用get方法,还可以设置默认值

  age = info.get(‘age‘)
  age                                                 #‘age‘键不存在,所以age为None
  type(age)
  <type ‘NoneType‘>
  age = info.get(‘age‘, 18) # 若info中不存在‘age‘这个键,就返回默认值18
  age
  18
  字典操作
  修改
  info = {‘name‘:‘班长‘, ‘id‘:100, ‘sex‘:‘f‘, ‘address‘:‘地球亚洲中国北京‘}

  info[‘id‘] = 200

  添加
  info[‘age‘]= 28

  获取

  info.get(age)

  删除

  del info[‘name‘]

  删除整个字典

  del info

  clear清空整个字典

  info.clear()      清空后 { }

  常用字典操作

  a={"name":suqin,"age":18}

  len(a)

  a.keys()   返回列表

  a.values()     返回列表

  a.items()     返回(键:值)元祖的列表

     a.has_key(‘name‘) 返回True | false

  字典的遍历

  a={"name":suqin,"age":18}

                          for key in a.keys():   for value in a.values():

  for item in a.items():
      print(item)
  >> (‘name‘, suqin)
  >> (‘age‘, 18)

  for key,value in a.items():
  进行的拆包

  想一想,如何实现带上下标索引的遍历enumerate()

  >>> list = [‘a‘, ‘b‘, ‘c‘, ‘d‘]
  >>> for i, chr in enumerate(list):
  ... print i, chr
  ...
  0 a
  1 b
  2 c
  3 d

  字符串遍历
  >>> a_str = "hello itcast"
  >>> for char in a_str:
  ... print(char,end=‘ ‘)
  ...
  h e l l o i t c a s t

  元组遍历
  >>> a_turple = (1, 2, 3, 4, 5)
  >>> for num in a_turple:
  ... print(num,end=" ")
  1 2 3 4 5

时间: 2024-08-14 11:44:29

静态,类,实例方法,字典的相关文章

Python的类实例方法,类方法,类静态方法

以下面的类定义为例: # coding:utf-8 class A: count = 0 def __init__(self, inst_name): self.inst_name = inst_name self.__class__.count += 1 def inst_method(self): print '实例(%s):%s' % (self.__class__.count, self.inst_name) @classmethod def class_method(cls): pri

Asp.net动态页面静态化之字典哈希表的输出已及遍历判断的实现

Asp.net动态页面静态化之字典哈希表的输出已经遍历判断的实现 using System; using System.Collections.Generic; using System.Linq; using System.Web; using NVelocity.Runtime; using NVelocity; using NVelocity.App; using System.Collections; namespace czbk { /// <summary> /// diction

python中类方法、类实例方法、静态方法的使用与区别

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

collections.ChainMap类合并字典或映射

## 使用update()方法或者ChainMap类合并字典或映射 1 # 使用update()方法合并 2 3 a = {'x': 1, 'z': 3} 4 b = {'y': 2, 'z': 4} 5 merged = dict(b) # 创建一个新字典 6 print(merged) 7 # {'y': 2, 'z': 4} 8 merged.update(a) # 更新字典数据(合并) 9 print(merged) 10 # {'y': 2, 'z': 3, 'x': 1} 11 12

js 静态方法 静态变量 实例方法 实例变量

1.静态方法的定义 Js代码   var BaseClass = function() {}; // var BaseClass=new Function(); BaseClass.f1 = function(){//定义静态方法 alert(' This is a static method '); } BaseClass.f1();//This is a static method var instance1 = new BaseClass(); instance1.f1();//insta

《Unity_API解析》 第二章(下) Camera类实例方法

RenderToCubemap方法:生成Cubemap静态贴图(专业版有) 1.public bool RenderToCubemap(Cubemap cubemap); 参数为Cubemap静态贴图 2.public bool RenderToCubemap(RenderTectur cubemap): 其中参数cubemap为RenderTexture静态贴图 3.public bool RenderToCubemap(Cubemap cubemap, int faceMask); 其中参数

Python把类当做字典来访问

定义一个类将它实例化,我们可以通过obj.属性来访问类的属性,如果想获取类的所有实例变量,我们可以使用obj.__dict__来访问,如下: class A: def __init__(self): self.a = 1 self.b = 2 a = A() print(a.__dict__) # {'a': 1, 'b': 2} #获取变量a: print(a.__dict__['a']) # 1 如果我们想直接通过字典的方式访问类,obj=A(),dict(obj)直接拿到类的所有实例变量,

002JAVA多个多线程同时竞争一个类实例方法

package com.skcc.mthread; public class MyThread001 extends Thread { private int count=4; public MyThread001() { // TODO Auto-generated constructor stub } @Override public synchronized void run() { count--; System.out.println(Thread.currentThread().ge

字典转模型,模型转字典,将某个类中数组直接转换成模型

/** *  数组中需要转换的模型类 * *  @return 字典中的key是数组属性名,value是数组中存放模型的Class */ - (NSDictionary *)objectClassInArray; 使用实例: @property(nonatomic,strong)NSArray *pic_urls; - (NSDictionary *)objectClassInArray{ return @{@"pic_urls":[StatusPhoto class]}; } NSA

poj 3630 Phone List (字典树 +静态字典树)

Phone List Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 22235   Accepted: 6885 Description Given a list of phone numbers, determine if it is consistent in the sense that no number is the prefix of another. Let's say the phone catalogu