面向对象进阶2
'''面向对象进阶'''
类方法,类当中的方法分为:实例方法,静态方法,
一般情况下,类当中的方法都是实例方法,必须有实例来调用
有些情况下,有些方法是想让类本身也可以调用,而无需实例化,那么可以定义类方法
class Rectangle(): # 新建一个长方形的类
def __init__
(self,length,width):
self.length=length
self.width=width
def perimerter(self): # 周长
return (self.length+self.width)*2
def area(self): # 面积
return (self.length*self.width)
@classmethod #装饰器,声明下面的方法是类方法,而不是实例方法
def features(cls):
print('你在调用类方法')
@ staticmethod
def func():
print('你在调用静态方法')
res = Rectangle(5,4) # 实例化一个矩形
print(res.perimerter())
print(res.area())
类方法既可以由类调用, 也可以实例调用
Rectangle.features()
res.features()# 静态方法 类本身和实例本身都可以调用
Rectangle.func()
res.func()
inpect 模块 ,python的自检模块,可以判断某一个对象是否是某种类方法
import inspect
print(inspect.ismethod(Rectangle.features)) # 判断某一个对象是否是方法print(inspect.ismethod(Rectangle.func)) # 判断某一个对象是否是方法
也可以用type查看数据类型
print(type(Rectangle.features))
print(type(Rectangle.func))
*****函数中的静态方法不是方法 而是函数# 静态本身和类本身没有太大的关系,只是放在了类里面