面向对象进阶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))

*****函数中的静态方法不是方法 而是函数# 静态本身和类本身没有太大的关系,只是放在了类里面

posted @ 2020-12-29 15:41  太白之魔童降世  阅读(55)  评论(0编辑  收藏  举报