Python 静态方法 类方法

静态方法和实例方法的区别主要体现在两个方面:
1. 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式。而实例方法只有后面这种方式。也就是说,调用静态方法可以无需创建对象。
2. 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法;实例方法则无此限制。
3. 类方法可以被对象调用,也可以被实例调用;传入的都是类对象,主要用于工厂方法,具体的实现就交给子类处理
4. 静态方法参数没有实例参数 self, 也就不能调用实例参数
# coding: utf-8
class Fruit(object):
    version = 1.0  #静态对象
    """docstring for Fruit"""
    def __init__(self):
        super(Fruit, self).__init__()
        self.color = 'blue'

    def is_clean(cls):
        print cls.color
        return True

    @classmethod
    def foo(cls):
        #类方法可以被对象调用,也可以被实例调用;传入的都是类对象,主要用于工厂方法,具体的实现就交给子类处理
        Fruit.version += 1
        print cls.color
        print 'calling this method foo()'

    @staticmethod
    def pish_color(color):
        #静态方法参数没有实例参数 self, 也就不能调用实例参数
        Fruit.color = color

    def add_foo(self):
        Fruit.version += 1

if __name__ == "__main__":
    o = Fruit()
    o.is_clean()
    # o.pish_color('Green')
    # o.foo()
    Fruit.foo()
    # o.add_foo()
    # print o.version
    # o.foo()
    # print o.version
    # print Fruit.version

Python 静态方法 类方法

时间: 2024-10-08 18:32:53

Python 静态方法 类方法的相关文章

python静态方法类方法属性方法

Python的静态方法和类成员方法都可以被类或实例访问,两者概念不容易理清,但还是有区别的: 1)静态方法无需传入self参数,类成员方法需传入代表本类的cls参数: 2)从第1条,静态方法是无法访问实例变量的,而类成员方法也同样无法访问实例变量,但可以访问类变量: 3)静态方法有点像函数工具库的作用,而类成员方法则更接近类似Java面向对象概念中的静态方法. 静态方法 @staticmethod    def staticmd():        print '静态方法 @classmetho

python静态方法-类方法

关于类的静态方法:@staticmethod 和 @classmethod 1.使用这两种方法,不用实例化类,直接可以用,如:Stu.say() 2.两种方法的区别: 1.@staticmethod 不需要加参数: 调用类变量用:类名.类变量名: 调用类函数用:类名.函数() 2.@classmethod 需要加参数cls: 调用类变量用:cls.类变量名: 调用类函数用:cls().函数() class Stu(object): country = 'china' # 类变量 def __in

python 静态方法、类方法(二)

<Python静态方法.类方法>一文中曾用在类之外生成函数的方式,来计算类的实例的个数.本文将探讨用静态方法和类方法来实现此功能. 一使用静态方法统计实例 例1.static.py # -*- coding:utf-8 -*- class Spam: numInstance = 0 def __init__(self): Spam.numInstance += 1 def printNumInstance(): print 'Number of instance:', Spam.numInst

IOS—静态方法(类方法)和实例方法

1.实例方法/动态方法 a).标识符:- b).调用方式:(实例对象    函数) c).实例方法在堆栈上. 2.静态方法/类方法 a).标识符:+ b).调用方式:(类    函数) c).静态方法在堆上分配内存. 3.静态方法和实例方法的区分 a).静态方法常驻内存,实例方法不是,所以静态方法效率高但占内存.事实上,方法都是一样的,在加载时机和占用内存上,静态方法和实例方法是一样的,在类型第一次被使用时加载.调用的速度基本上没有差别. b).静态方法在堆上分配内存,实例方法在堆栈上.事实上所

IOS基础——静态方法(类方法)和实例方法

1.实例方法/动态方法 a).标识符:- b).调用方式:(实例对象    函数) c).实例方法在堆栈上. 2.静态方法/类方法 a).标识符:+ b).调用方式:(类    函数) c).静态方法在堆上分配内存. 3.静态方法和实例方法的区分 a).静态方法常驻内存,实例方法不是,所以静态方法效率高但占内存.事实上,方法都是一样的,在加载时机和占用内存上,静态方法和实例方法是一样的,在类型第一次被使用时加载.调用的速度基本上没有差别. b).静态方法在堆上分配内存,实例方法在堆栈上.事实上所

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

Python的方法并不想C#,Java这些编译性语言那样严格的区分静态方法和实例方法.也就是说Python的静态方法,类方法和实例方法只是在调用上有区别,类型和实例都可以调用.一般规则如下:A:实例方法:没有@classmethod和@staticmethod标记的方法是实例方法.假设这个有n个比传参数,类型调用的时候需要给n个参数传参.而实例调用时则只能传n-1个参数,因为第一个参数被系统默认传递了实例本身:因为有这个规定,所以实例方法如果没有参数,则实例是无法调用的,但类型可以调用.B:类方

Python 静态方法、类方法

今天我们来讨论一下Python类中所存在的特殊方法--静态方法.类方法. 一.定义 静态方法: 一种简单函数,符合以下要求: 1.嵌套在类中. 2.没有self参数. 特点: 1.类调用.实例调用,静态方法都不会接受自动的self参数. 2.会记录所有实例的信息,而不是为实例提供行为. 类方法: 一种函数,符合以下特征 1.类调用.或实例调用,传递的参数是一个类对象. 二.需要特殊方法的情况(用途) 程序需要处理与类而不是与实例相关的数据.也就是说这种数据信息通常存储在类自身上,不需要任何实例也

python 静态方法与类方法

#!/usr/bin/python #-*- coding: utf-8 -*- class Pizza(object):     a="AA"     def __init__(self):         self.name = 'leon'     def cook(self):         return self.mix_ingredients(self.cheese, self.vegetables)     @staticmethod     def mix_ingre

python面向对象之静态属性/静态方法/类方法/组合

#!/usr/bin/env python # coding:utf-8 class Campus: def __init__(self,name,addr,type): self.Name = name self.Addr = addr self.Type = type def details(self): print("学样的详细信息, 名称:%s 地址:%s 类型:%s" %(self.Name,self.Addr,self.Type) ) c1 = Campus("南