类中方法有三种:对象方法,类方法,静态方法
怎么定义:直接定义在类中的函数就是对象方法 特点:自带参数self(self在调用对象的时候不用传参,系统会将当前对象传给self),谁调用指向谁 怎么调用:用对象去调用(对象.方法名())
怎么定义:定义函数前加装饰器 @classmethod 特点:自带参数cls(cls在通过类调用的时候不用传参,系统会自动将当前类传给cls) 怎么调用:用类调用(类.方法名)
怎么定义:在定义函数前加一个装饰器@staticmethod 特点:没有默认参数 怎么调用:用类调用(类.方法名)
如果实现函数的功能需要用到对象的属性,就选对象方法
class Dog(): """eat是对象方法""" def eat(self): print('在啃骨头') @classmethod def count(cls): # Dog能做的cls都能做 print('狗的数量是:100') @classmethod def func1(cls): print() @staticmethod def func2(): print('静态方法') 创建对象 dog1 = Dog() 用对象调用对象 dog1.eat() 用类调用类方法 Dog.count() 用类调用静态方法 Dog.func2() print('===========================================================') 从本质上讲,类的所有方法都可以用对象和类来调用 Dog.eat(12)# 如果用类调用对象方法,self就会变成普通的参数,没有存在的价值构造方法:函数名和类名是一样的,用来创造对象的方法就是构造(python中的构造方法,在定义类的时候系统就已经自动创建好了)
__init__方法又叫初始化方法,用来在创建对象的时候对对象进行初始化操作的 当我们通过类创建对象的时候,系统会自动调用__init__方法来对类创建出来的对象进行初始化 调用构造方法创建对象的时候需不需要参数,需要几个,看被自动调用的__init__方法 class Person: def init(self,a,b): print(‘初始化方法’,a,b)
p1 = Person(1,2) p2 = Person(3,4)
def Person(*args,**kwargs): 对象 = 申请空间创建对象 对象.init(*args,**kwargs) return 对象
对象属性:会因为对象不同而不一样 特点: