类的实例方法、静态方法、类方法及静态属性


1、类的方法,按照调用方式可以分为3种,实例方法、静态方法、和类方法

  1.1 实例方法

     实例方法只能通过实例对象调用,不能通过类进行调用。实例方法再定义时候使用关键字self,self代表实例对象本身。

class A():
    x=100
    def fun(self,y):
        self.x+=y
a=A()
a.fun(10)
print(a.x)
A.fun(10)
*****结果******
110
Traceback (most recent call last): #类调用错误
  File "/home/34f17b632da0cc986bc0f291c0518783.py", line 8, in <module>
    A.fun(10)
TypeError: fun() missing 1 required positional argument: 'y'

     1.2 静态方法

   静态方法可以使用实例对象调用,也可以使用类进行调用,他的的特点没有参数限制,定义时需要在函数前加@staticmethod

  

class B():
    @staticmethod
    def fun():
        print('hello,word')
a=B()
a.fun() #实例调用
B.fun() #类调用
***结果*****
hello,word
hello,word

     1.3 类方法:

   可以被类调用,也可以被实例对象调用,实例调用可以给类增加属性,类的属性修改需要通过类进行修改,类方法需要使用关键字cls,定义时候需要在函数前加@classmethod

  

class Student(object):
    school='szu'

    @classmethod
    def printmassage(cls):
        print(cls.school)
    

s1=Student()
Student.printmassage()  
s1.printmassage()  
s1.school='beijingizhong' #为类的实例增加属性,类的实例school本身不改变
print(Student.school)#szu
print(s1.school)#beijingizhong
Student.school='shanghaiyizhong'#通过类对类的属性school做修改,类的属性发生改变
s1.printmassage()  #shanghaiyizhong 
*****结果*******
szu
szu
szu
beijingizhong
shanghaiyizhong

2、静态属性

 静态属性。@property。作用就是把类的函数属性,封装成类似数据属性。再调用函数printmassage 时候,必须不带()执行。

class Student(object): 
    school='szu'

    @property
    def printmassage(self):
        print('aaaa')

s1=Student()
s1.printmassage    #aaaa

 

  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM