11.静态方法和类方法

一 静态方法 @staticmethod

格式:

class  类名:

  @staticmethod    #这是一个装饰器

  def 方法名(形参):

    方法体

调用格式:

类名.方法名(实参)

对象名.方法名(实参)

使用@staticmethod 进行修饰,静态方法没有self,cle 参数的限制

静态方法与类无关,可以被转换成函数使用

class Person(object):
    @staticmethod  #静态方法
    def study(name):
        print(f"{name}会学习")
#可以使用对象访问也可以使用类访问
Person.study("xiaowu")   #使用类访问
#pe = Person()    #实例化对象访问
# pe.study()
    

应用场景静态方法:

1.不需要类属性,类方法可以使用静态方法,取消不必要的参数传递,有利于减少内存占用和性能消耗

2.不需要访问实例对象,实例属性,创建实例

二:类方法  @classmethod

类有三种定义方法1.实例方法,2.静态方法,3.类方法

对于类对象,第一个参数那必须是类对象,一般以cls作为第一个参数。

格式:

class  类名:

  @classmethod    #这是一个装饰器

  def 方法名(cls,形参):

    方法体

class Person(object):
    name = "xiaolan"  #类属性
    @classmethod  
    def sleep(cls):
        print("人在睡觉")
        print("cls:",cls)  #cls代表类对象本身,类本质上就是一个对象 cls: <class'__main__.Person'>
        print(cls.name)
Person.sleep()  #调用
print(Person)# <class'__main__.Person'>

类方法内部可以访问类属性,或调用其他方法

 应用场景类方法:

1.当方法中需要使用到类对象(如访问私有类属性等),定义类方法

2.类方法一般配合类属性使用

三:新式类

class A():      经典类

class  A(object):  新式类:继承了object类或者该类的子类都是新式类   ---推荐使用

object --- 对象,python为所有对象提供的基类(顶级父类),提供了一些内置的属性和方法,可以使用dir()查看

python3 中一个类没有继承任何类,则默认继承object类,因此python3都是新式类,python2一个类没有继承任何类,也不会继承object类 ,只有python2版本才有经典类

四:总结三大方法

1.实例方法:方法内部访问实例属性,方法内部可以通过类名.属性名来访问类属性  

2.静态方法@staticmethod:方法内部,不需要访问实例属性和类属性 没有形参限制,

如果要访问类属性,通过类名.类属性名访问,不能访问实例属性

3.类方法通过@classmethod:方法内部只需要访问类属性,可以通过cls.类属性名,不能访问实例属性,cls代表类本身

 

类属性是公共的,所有方法内部都能够访问到,静态方法不需要访问类属性,因为静态 方法和类、对象没有关联,实例属性是私有的,只有实例方法内部能够访问到

 

posted on 2026-02-02 02:49  梨花苗  阅读(3)  评论(0)    收藏  举报