一、普通方法
在面向对象里面我们用到最多的就是普通方法,语法格式如下:
def function_name(self,...):
pass
外部用实例调用
二、静态方法
静态方法用 @staticmethod 进行说明。它不能访问实例属性,参数不能传入self。是一种与类相关但是不依赖类与实例的方法。
三、类方法
类方法用 @classmethod 进行说明。它不能访问实例属性,参数必须传入cls。必须传入cls参数(即代表了此类对象-----区别------self代表实例对象),并且用此来调用类属性:cls.类属性名。
eg:
class eg():
country = 'China' #声明类属性,并且赋值
# 实例属性通过构造方法来声明
# self不是关键字,代表的是当前而对象
def __init__(self, name, food,address,country):
#构造方法不需要调用,在实例化的时候自动调用
# print('我是构造方法,在实例化得时候调用')
self.name = name
self.food = food
self.__address = address #双下划线开头的属性是私有属性
eg.country = country
# 1:普通方法:
def a(self):
#类属性的使用通过类名.属性名使用 这是规范
#私有属性在类里面使用正常使用
print(self.name, self.food,self.__address )
#2:静态方法:通过装饰器 @staticmethod 装饰
@staticmethod
def SilenceS(): #不需要传递实例
#不能访问实例属性
# print(self.name) # erro
#只能访问类属性
print(eg.country)
#3:类方法:@classmethod
@classmethod
def b(cls,n): #class 也不是关键字
#不能访问实例属性
# print(self.name) # erro
cls.country = n
print(cls.country)
#实例化对象
people01 = eg('MgVccl',19,'男','上海')
#通过对象来调用静态方
# people01.SilenceS()
#通过对象来调用类方法
# people01.b()
#静态方法和类方法的调用,推荐使用类名的方式去调用
#通过类名来调用静态方法
eg.SilenceS()
#通过类名来调用类方法
eg.b('jane')