函数与方法的区别

函数与方法的区别

def func1():
    pass

class A:
    def func(self):
        pass

# 1.通过打印函数名的方式区别什么是方法,什么是函数 (了解)
# print(func1)  # <function func1 at 0x000001EE93C3F040>
# # 通过类名调用的类中的实例方法叫做函数
# print(A.func)  # <function A.func at 0x000001EEAE73D670>
# # 通过对象调用的类中的实例方法叫做方法
# obj = A()
# print(obj.func)  # <bound method A.func of <__main__.A object at 0x000001A98AE13C10>>

# 2.可以借助模块判断是方法还是函数
from types import FunctionType
from types import MethodType


# 总结: 如何判断类中的是方法还是函数
# 函数都是显性传参 方法都是隐性传参
  • python中一切皆对象,类在某种意义上也是一个对象,python中自己定义的类,以及大部分内置类,都是由type元类(构建类)实例化得来的

  • python中一切皆对象,函数在某种意义上也是一个对象,函数这个对象是从FunctionType这个类实例化出来的

  • python中一切皆对象,方法在某种意义上也是一个对象,方法 这个对象是从MethodType这个类实例化出来的

    class A:

      company_name = '老男孩教育'  # 静态变量(静态字段)
      __iphone = '135'  # 私有静态变量(私有静态字段)
      
      def __init__(self,name,age):  # 特殊方法
          self.name = name  # 对象属性(普通字段)
          self.__age = age  # 私有对象属性(私有普通字段)
          
      def func1(self):  # 普通方法
          pass
      
      def __func(self):  # 私有方法
          print(666)
          
      @classmethod  # 类方法
      def class_func(cls):
          """定义类方法 至少有一个cls参数"""
          print('类方法')
          
      @staticmethod  # 静态方法
      def static_func():
          """定义静态方法 无默认参数"""
          print('静态方法')
          
      @property  # 属性
      def prop(self):
          pass
上一篇:动手实现深度神经网络4 封装成层


下一篇:Field笔记