1. class Yoo:
  2. def hi(self):
  3. print('Guess it...')

类型判断
方法和函数在type方法中的定义分别为:MethodType和FunctionType。

# hi为方法
x = Yoo()
isinstance(x.hi , MethodType) >>>True

# hi为函数
isinstance(Yoo.hi , FunctionType) >>>True

方法是用来描述一个对象的行为和动作

第一种方式是类的对象调用hi即为方法,第二种是类调用hi则为函数

函数
关于python的函数,大体可以分为内置函数,匿名函数,自定义函数。。。。

  • 内置函数:python默认设置的一些函数,比如type,range,等等(内置函数具体信息
  • 匿名函数:python匿名函数lambda将多行命令转化为单行执行
  • 自定义函数:用户自己定义的函数

方法
python中方法具体划分为:

  • 实例方法:通过self进行调用的方法
  • 属性方法:通过装饰器property来定义的getattr和setattr的属性方法
  • 魔法方法:又称为特殊方法,特征明显,即通过双下划线使用的方法
  • 私有方法:在方法前添加两个下划线定义的方法
  • 类方法:通过类名的调用去操作公共模板中的属性和方法
  • 静态方法:不用传入类空间和对象空间的方法,作用是保证代码的一致性和规范性,可以完全独立类外的一个方法
class MainClass:
    a = 100 # 类本身的属性
    def shilifangfa(self):
        print('这是一个实例方法',self.a)
        print(self.index) #正常访问
        self.a = 200 # 相当于实例本身创建了一个属性
        print(self.a) # a=200
        print(MainClass.a) # a = 100

    @classmethod
    def leifangfa(cls):
        print(cls.index) # type object 'MainClass' has not attribute 'index'
        # 这句type object变相告诉我们,类也是一个对象,不过是一个type对象
        # 验证了python中万物皆对象
        print('这是一个类方法',cls.a)
        cls.a = 200 #修改了类本身的a
        print(cls.a) # a=200
        #print(cls.index)#类方法无法获取到实例属性

    @staticmethod
    def jingtaifangfa():
        print('这是一个静态方法')

m = MainClass()
m.index = 1000 # 实例本身属性
m.shilifangfa()
MainClass.leifangfa()
m.jingtaifangfa()