Python普通方法、静态方法、类方法

开始

# -*-coding:utf-8-*-
# 普通方法,类方法,静态方法的区别

__metaclass__ = type

class Tst:
    name = ‘tst‘

    data = ‘this is data‘

    # 普通方法
    def normalMethod(self, name):
        print self.data, name

    # 类方法,可以访问类属性
    @classmethod
    def classMethod(cls, name):
        print cls.data, name

    # 静态方法,不可以访问类属性
    @staticmethod
    def staticMethod(name):
        print name

测试

  • 三种方法都可以通过实例来调用,但是静态方法和类方法无法访问实例属性,所以更改了tst.data仅对普通方法起了作用
tst = Tst()
tst.data = ‘this is new‘
tst.normalMethod(‘name‘)
tst.staticMethod(‘name‘)
tst.classMethod(‘name‘)

#结果
this is new name
name
this is data name

区别

  • 普通方法不能通过类名调用,但是静态方法和类方法是可以的
# error普通方法必须通过实例调用
# Tst.normalMethod(‘name‘)
Tst.classMethod(‘name‘)
Tst.staticMethod(‘name‘)

#结果
this is data name
name

总结

  • 普通方法,可以通过self访问实例属性
def normalMethod(self,data)
  • 类方法,可以通过cls访问类属性
@classmethod
def classMethod(cls,data)
  • 静态方法,不可以访问,通过传值的方式
@staticmethod
def staticMethod(data)

原文地址:https://www.cnblogs.com/fmgao-technology/p/9172978.html

时间: 2024-08-26 11:54:14

Python普通方法、静态方法、类方法的相关文章

python中的静态方法和类方法

静态方法独立于类和类的实例,它是定义在类作用域内的方法.可以由类和实例直接调用. 类方法和静态方法都要使用装饰器来定义,定义的基本格式是: @staticmethod def <function name>(): #do something 类方法定义的基本格式是: @ classmethod def <function name>(cls): #do something 类方法与成员方法不同的是,它需要传入参数cls,cls代表类. class Myclass(): x='cla

python——实例方法、静态方法、类方法、类变量和实例变量浅析

概述: 实例方法就是类的实例能够使用的方法. 静态方法是一种普通函数,就位于类定义的命名空间中,它不会对任何实例类型进行操作.使用装饰器@staticmethod定义静态方法.类对象和实例都可调用静态方法. 类方法是将类本身作为对象进行操作的方法.类方法使用@classmethod装饰器定义,其第一个参数是类,约定写为cls.类对象和实例都可以调用类方法. super用来执行父类中的函数. 类变量定义在类的定义之后,实例变量则是以为self.开头. 如何调用父类的构造函数:子类(派生类)并不会自

python类的静态方法和类方法区别

# python类的静态方法和类方法区别 ## 先看语法,python 类语法中有三种方法,实例方法,静态方法,类方法. 本文由黄哥python培训黄哥所写. # coding:utf-8 class Foo(object): """类三种方法语法形式""" def instance_method(self): print("是类{}的实例方法,只能被实例对象调用".format(Foo)) @staticmethod def

Python 静态方法 类方法

静态方法和实例方法的区别主要体现在两个方面: 1. 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这种方式.也就是说,调用静态方法可以无需创建对象. 2. 静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例方法:实例方法则无此限制. 3. 类方法可以被对象调用,也可以被实例调用:传入的都是类对象,主要用于工厂方法,具体的实现就交给子类处理 4. 静态

day33 序列类型,绑定方法,类方法,静态方法,封装继承和多态

Python之路,Day20 = 序列类型,绑定方法,类方法,静态方法,封装继承和多态 序列是指有序的队列,重点在"有序". 一.Python中序列的分类 Python中的序列主要以下几种类型: 3种基本序列类型(Basic Sequence Types):list.tuple.range 专门处理文本的附加序列类型(Text Sequence Types):str 专门处理二进制数据的附加序列类型(Binary Sequence Types): bytes.bytearray.mem

python基础学习——静态方法、类方法

最近温故了一下 python 基础知识,有新的理解,整理在此,以便以后查阅或纠正. 本文描述一下静态方法和类方法,引出装饰器的概念,在下一篇博文中记录. 先举例,看效果: 1 class MyClass: 2 def smeth(): 3 print('This is a static method') 4 smeth = staticmethod(smeth) 5 6 def cmeth(cls): 7 print('This is a class method of', cls) 8 cme

Python面向对象之类属性类方法静态方法

类的结构 实例 使用面向对象开发时,第一步是设计类: 当使用 类名() 创建对象时,会自动执行以下操作: 1.为对象在内存中分配空间--创建对象: 2.为对象的属性 设置初始值--初始化方法(init); 对象创建后,内存中就有了一个对象的实实在在的存在--实例: 因此通常也会把: 1.创建出来的对象叫做类的实例: 2.创建对象的动作叫实例化: 3.对象的属性叫实例属性: 4.对象调用的方法叫实例方法: 在程序执行时: 1.对象各自拥有自己的实例属性: 2.调用对象方法,可以通过self. 访问

Python高级语法-对象实例对象属性-类与实例,class方法静态方法等(4.6.1)

目录 1.说明 2.代码 关于作者 @ 1.说明 python中属性:类属性,实例属性 方法:类方法,实例方法,静态方法 想修改类属性,只能是类方法,因为只有类方法把cls(类)传入数据里面 静态方法也就是个普通的方法,为了方便而已 实例方法,不能通过类来直接调用,要调用也可以self = 对象名 具体下面 2.代码 class Provice(object): #类属性 country = "china" def __init__(self,name): #实例属性 self.nam

python中实例方法,类方法,静态方法的区别

Python中至少有三种比较常见的方法类型,即实例方法,类方法.静态方法.它们是如何定义的呢?如何调用的呢?它们又有何区别和作用呢?且看下文. 首先,这三种方法都定义在类中.下面我先简单说一下怎么定义和调用的.(PS:实例对象的权限最大.) 实例方法 定义:第一个参数必须是实例对象,该参数名一般约定为“self”,通过它来传递实例的属性和方法(也可以传类的属性和方法): 调用:只能由实例对象调用. 类方法 定义:使用装饰器@classmethod.第一个参数必须是当前类对象,该参数名一般约定为“

Python3 中类的静态方法、普通方法、类方法

Python3 中类的静态方法.普通方法.类方法 静态方法: 用 @staticmethod 装饰的不带 self 参数的方法叫做静态方法,类的静态方法可以没有参数,可以直接使用类名调用. 普通方法: 默认有个self参数,且只能被对象调用. 类方法: 默认有个 cls 参数,可以被类和对象调用,需要加上 @classmethod 装饰器. 1 class Classname: 2 @staticmethod 3 def fun(): 4 print('静态方法') 5 6 @classmeth