绑定方法与非绑定方法
绑定方法与非绑定方法
classmethod与staticmethod
1、classmethod(绑定方法)
对象的绑定方法:是由对象来调用,会将调用的对象当做第一个参数传入
类的绑定方法:是由类来调用,会将调用的类当做第一个参数传入
是一个python内置的装饰器,在类内部定义方法时进行装饰,将类内部的方法变为“类的绑定办法”
class Foo:
__date = '天王盖地虎,Mr沈真牛批'
def __init__(self,name,age):
self.name = name
self.age = age
@classmethod
def check_date(cls,name,pwd): # 通过classmethod装饰器,self变为cls
obj = cls(name,pwd)
if name == 'shen' and pwd == 123:
print(cls.__date)
else:
print('权限不足')
Foo.check_date('shen',123) # 天王盖地虎,Mr沈真牛批
Foo.check_date('tate',123) # 权限不足
2、非绑定方法(静态方法、共享方法)(staticmethod)
是python内置的装饰器,在类的内部定义方法时使用,将类内部的方法变为“非绑定方法”
非绑定方法:可以由对象或类来调用,谁来调用都是普通的方法(普通函数),方法需要几个参数就要传几个参数,不会将自身传入
# uuid用于产生随机字符串的模块,由时间戳以及某种算法组合而成,会产生一串世界上独一无二字符串
import uuid
class Foo:
date = uuid.uuid4()
@staticmethod
def get_date():
print('天王盖地虎,Mr沈真牛批')
@staticmethod
def info(name,age,sex):
print(f'姓名: {name}, 年龄: {age}, 性别: {sex}, id: {Foo.date}')
# 由对象调用
obj = Foo()
obj.get_date() # 天王盖地虎,Mr沈真牛批
obj.info('shen',18,'male')
# 姓名: shen, 年龄: 18, 性别: male, id: 08ef31e6-ccdf-4e14-8db4-a390c3787acf
# 由类来调用
Foo.get_date() # 天王盖地虎,Mr沈真牛批
Foo.info('shen',18,'male')
# 姓名: shen, 年龄: 18, 性别: male, id: 08ef31e6-ccdf-4e14-8db4-a390c3787acf
3、isinstance与issubclass
isinstance:判断一个对象是否是一个类的实例,如果是返回True,如果不是返回False
issubclass:判断一个类是否是另一个类的子类,如果是返回True,如果不是返回False
class Foo:
def __init__(self):
pass
class Goo:
def __init__(self):
pass
foo_obj = Foo()
goo_obj = Goo()
print(isinstance(foo_obj, Foo)) # True
print(isinstance(goo_obj, Foo)) # False
class Foo:
def __init__(self):
pass
class Sun(Foo):
def __init__(self):
pass
class Goo:
def __init__(self):
pass
print(issubclass(Sun,Foo)) # True
print(issubclass(Goo,Foo)) # False
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!