【day25】类方法classmethod、静态方法staticmethod、普通方法

 

普通方法:通过实例传参数进行调用的方法。s = 类(参数)

静态方法staticmethod:如果我们想写仅仅与类交互而不是与实例交互的方法,用类方法就可以达成,好处是不让类代码的关系到类定义的外面,也避免了今后代码维护的困难。

class Foo:
    def __init__(self):
        pass

    @staticmethod
    def say_hi(self):
        print(‘hi,im staticmethod‘)   

Foo.say_hi()        #不用实例化,就可以调用该方法
#输出hi,im staticmethod

  当我们要是用类的属性时,必须使用类名.属性,而类名来自于实例名,所以必须创建一个实例,然后调用类的属性。但是我们只想与类而不是与实例交互,怎么办呢?

用classmethod,就可以不创建实例在类中调用属性。

class Foo:
    f = ‘im classmethod ‘
    def __init__(self):
        pass

    def say_hi(self):
        print(self.f)        #与实例交互的调用

q = Foo()
print(q.sayhi)
    
#输出
im classmethod
class Foo:
    f = ‘ im classmethod ‘
    def __init__(self):
        pass
    @classmethod
    def say_hi(cls):
        print(cls.f)

Foo.say_hi()  #不需要实例化

输出:
im classmethod

以上三种方法分别成为:实例方法、静态方法、类方法。

时间: 2024-10-26 21:20:20

【day25】类方法classmethod、静态方法staticmethod、普通方法的相关文章

python类方法@classmethod与@staticmethod

目录 python类方法@classmethod与@staticmethod 一.@classmethod 介绍 语法 举例 二.@staticmethod 介绍 语法 举例 python类方法@classmethod与@staticmethod 一.@classmethod 介绍 与普通的类方法有所不同的是,用@classmethod修饰的类方法不传入self实例本身,而是传入cls,代表这个类自身,可以来调用类的属性,类的方法,实例化对象等. 语法 使用的语法也非常简单,直接在类方法上加上装

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

学习javascript的同学尤其是一些初级学员很难弄清什么,类方法.静态方法.动态方法.实例化方法.虽然有些都一样,但是叫法不同.本着互联网分享精神,今天我就将我自己的见解分享给大家,希望能有所帮助. 开始 创建一个类 function User(name, age) { this.name = name; this.age = age; } 创建一个类的静态方法(也叫类方法) User.getClassName = function () { return 'User'; }; 调用静态方法

python中的类方法、静态方法、对象方法

注:以下都是以公有为前提,私有方法只能在类内部调用,不需多讲. 1.对象方法 这种方法都有一个默认参数:self  这代表实例的这个对象 def __init__(self): print("初始化对象") 类是不能直接调用对象方法: class User(object): name = 'zs' def __init__(self): print("初始化对象") User.__init__() 这样调用抛出一个错误:TypeError: __init__() m

静态方法@staticmethod 属性方法@property

多态 接口重用, 一种接口,多种实现 静态方法@staticmethod 只是名义上归类管理, 实际上在静态方法里访问不了类或实例中的任何属性类方法@classmethod 只能访问类变量,不能访问实例变量 属性方法@property 把一个方法变成一个静态属性给参数赋值要重新定义一个同名函数,并且前面加@属性名.setter import os# os.system()# os.mkdir() class Dog(object): def __init__(self,name): self.n

Python中的实例方法、类方法、静态方法和普通方法

为了辨析它们的差别,写了如下代码: 1 class C: 2 3 def self_method(self, a): 4 return a 5 6 @classmethod 7 def class_method(cls, a): 8 return a 9 10 @staticmethod 11 def static_method(a): 12 return a 13 14 def method(a): 15 return a 16 17 if __name__ == '__main__': 18

Python的classmethod和staticmethod区别

静态方法(staticmethod) 类方法(classmethod) 静态方法和类方法都可以通过类名.方法名或者实例.方法访问. #-*- coding:utf8 -*- class A(object): def instance_method(self,x): print "instance_method (%s,%s)" % (self,x) @classmethod def class_method(cls,x): #类方法的调用使用类本身作为其隐含的参数 #调用者本身并不需要

静态属性、类方法、静态方法

静态属性 静态属性就是数据属性,在函数属性上加装饰器@property,感官会认为是把函数属性转化成数据属性,运用类函数方法不需要加() 封装:把背后的操作逻辑隐藏起来,跟实例绑定 class Hhj: def __init__(self,name,age,face): self.name=name self.age=age self.face=face @property def test(self): print('我是%s 年纪是%s 长得%s' %(self.name,self.age,

Python的3个方法:静态方法(staticmethod),类方法(classmethod)和实例方法

Python的方法主要有3个,即静态方法(staticmethod),类方法(classmethod)和实例方法,如下: 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 cla

python-静态方法staticmethod、类方法classmethod、属性方法property

Python的方法主要有3个,即静态方法(staticmethod),类方法(classmethod)和实例方法 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 def foo(x):     print "executing foo(%s)"%(x)   class A(object):     def foo(self,x):         print "executing foo(%s,%s)"%(self,x)       @