class Yoo:
def hi(self):
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()