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;
}
html, body
{

}
h1 {
font-size:1.5em;
font-weight:bold;
}
h2 {
font-size:1.4em;
font-weight:bold;
}
h3 {
font-size:1.3em;
font-weight:bold;
}
h4 {
font-size:1.2em;
font-weight:bold;
}
h5 {
font-size:1.1em;
font-weight:bold;
}
h6 {
font-size:1.0em;
font-weight:bold;
}
img {
border:0;
max-width: 100%;
}
blockquote {
margin-top:0px;
margin-bottom:0px;
}
table {
border-collapse:collapse;
border:1px solid #bbbbbb;
}
td {
border-collapse:collapse;
border:1px solid #bbbbbb;
}

2011-03-24 11:58:06|  分类: python |  标签:python  类方法  静态方法   |举报|字号 订阅

转自http://stonelee.javaeye.com/blog/726449

使用方法:

Python代码  收藏代码

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

调用方法:

Python代码  收藏代码

a = A()

a.foo(1)     //print   : executing foo(<__main__.A object at 0xb77d67ec>,1)

a.class_foo(1)    //executing class_foo(<class '__main__.A'>,1)

A.class_foo(1)    //executing class_foo(<class '__main__.A'>,1)

a.static_foo(1)    //executing static_foo(1)

A.static_foo(1)   //executing static_foo(1)

区别:

类方法和静态方法都可以被类和类实例调用,类实例方法仅可以被类实例调用

类方法的隐含调用参数是类,而类实例方法的隐含调用参数是类的实例,静态方法没有隐含调用参数

来自为知笔记(Wiz)

时间: 2024-08-11 15:13:24

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

java中类方法和实例方法

1.方法声明时,方法的类型前面不加关键字static的是实例方法,加static的是类方法即静态方法. 2.实例方法既可以对类变量操作也可以对实例变量进行操作,而类方法(static  method)只能够对类变量(static  varival)操作. 3.一个类中的方法可以互相调用,实例方法可以调用该类的其他方法,而类方法只能调用该类的类方法,不能调用实例方法. 4.类方法不能够被重写,但可以在子类重新定义他们.

python面向对象-3类的静态方法和类方法

还是以上次的洗衣机例子: 1 class Washer: 2 company='ZBL' 3 def __init__(self,water=10,scour=2): 4 self._water=water #不想让用户直接访问实例变量,可以标志成私有 5 self.scour=scour 6 self.year=2000#这是生产日期 7 #属性包装,将water属性包装成方法,用户使用water时实际是访问的方法 8 @staticmethod #定义一个静态方法 9 def spins_m

Java中类方法与实例方法的区别

实例方法可以对当前对象的实例变量进行操作,也可以对类变量进行操作,但类方法不能访问实例变量.实例方法必须由实例对象来调用,而类方法除了可由实例对象调用外,还可以由类名直接调用. 另外,在类方法中不能使用 this 或 super. 关于类方法的使用,有如下一些限制: 1 在类方法中不能引用对象变量. 2 在类方法中不能使用super.this关键字. 3 类方法不能调用类中的对象方法. 与类方法相比,实例方法几乎没有什么限制: 1 实例方法可以引用对象变量(这是显然的),也可以引用类变量. 2

Python中类方法重载---大部分

重载方法格式: def __xxx__(self,other): ... 注:重载方法格式-----------------------------------------------------------------运算符运算符重载: 作用: 让自定义的类创建的对象像内建对象一样进项运算符操作 算数运算符: __add__ 加法 + __sub__ 减法 - __mul__ 乘法 * __truedif__ 除法 / __floordiv__ 地板除 // __mod__ 取模(求余) %

self与cls的区别:python中类方法的定义

一.通过def定义 需要至少传递一个参数,即self,这样定义的方法必须通过一个类的实例去访问,类似于c++中通过对象去访问: 二.classmethod 这种类方法的特点就是可以通过类名去调用,但是也必须传递一个参数:cls, 即class,表示可以通过类名直接调用: 三staticmethod 静态的类方法,类似于c++的静态函数,特点是参数可以为空,支持类名和对象两种调用方式: 原文地址:https://www.cnblogs.com/huhume/p/9401291.html

Python 专用方法和迭代机制

Python 设计哲学是"优雅"."明确"."简单",对于一件事只用一种最好的方法来做,而这种优雅在于背后很自然的隐藏了很多细节.比如对一些对象直接用for 语句来迭代,一些全局函数可以作用于很多具有共同特征的对象,还有生成器装饰器自省等特性.其中很多实现都是借助 Python  内部专用方法,而对外则使用统一的全局函数来进行操作,在配合一些语法糖,使得 Python 写起来愈发的方便,符合人的直觉. Python 专用方法 类的私有方法:以双线

类的静态方法

//es5 let Animal = function (type){ this.type = type } //这是类的实例对象方法 Animal.prototype.eat = function (){ Animal.walk()//引用类的静态方法 console.log('eat food') } //这是类的静态方法 Animal.walk = function () { console.log('walking') } let dog = new Animal('dog') dog.

python 类属性 实例属性 类方法 实例方法 静态方法(转载)

本文是转载,纯粹是为了方便后面自己查看,建议还是看原文的:http://www.cnblogs.com/dolphin0520/archive/2013/03/29/2986924.html 一.先来谈一下类属性和实例属性 在前面的例子中我们接触到的就是类属性,顾名思义,类属性就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本,这个和C++中类的静态成员变量有点类似.对于公有的类属性,在类外可以通过类对象和实例对象访问. class people: name = 'j

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