两个内置函数:
内置函数还有很多,这里先记载两个。
- isinstance() 判断对象所属类型,包括继承关系
- issubclass() 判断类与类之间的继承关系
class A:
pass
class B(A):
pass
b = B()
print(isinstance(b,B))
print(isinstance(b,A))
#两个都返回True
class A:pass
class B(A):pass
print(issubclass(B,A)) #返回True,B是A的子类
print(issubclass(A,B)) #返回False
___名字__:
有四种叫法:
是类中的特殊方法
双下方法
魔术方法
内置方法
_call_:
class A:
def __call__(self,*args,**kwargs):
print("执行call方法")
a = A()
a() #对象名() 相当于调用__call__方法
#或者
a = A()()
___len ___:
class Mylst:
def __init__(self):
self.lst = [1,2,3,4,5,6]
self.name = 'alex'
def __len__(self):
print("执行__len__了")
return len(self.lst)
l = Mylst()
print(len(l))
len(obj) 相当于调用了这个obj的__len__方法
_len_ 方法return的值就是len函数的返回值
如果一个obj对象没有__len__方法,那么len函数会报错
___new ___: 构造方法
class Single:
def __new__(cls, *args, **kwargs):
obj = object.__new__(cls)
print("在new方法里",obj)
return obj
def __init__(self):
print("在init方法里",self)
s = Single()
1、开辟一个空间,属于对象的
2、把对象的空间传给self,执行init
3、将这个对象的空间返回给调用者