python经典类新式类_python中的新式类与经典类对比

技术交流QQ群:1027579432,欢迎你的加入!

1.经典类是直接声明的。使用dir()方法也可以看出新式类中定义很多新的属性和方法,而经典类就3个

class A:

def __init__(self):

pass

dir(A)

['__doc__', '__init__', '__module__']

2.新式类是在创建的时候继承内置object对象(或者是从内置类型,如list,dict等)

class B(object):

def __init__(self):

pass

dir(B)

['__class__',

'__delattr__',

'__dict__',

'__doc__',

'__format__',

'__getattribute__',

'__hash__',

'__init__',

'__module__',

'__new__',

'__reduce__',

'__reduce_ex__',

'__repr__',

'__setattr__',

'__sizeof__',

'__str__',

'__subclasshook__',

'__weakref__']

3. python2.7下经典类搜索顺序-----深度优先顺序

class A:

def __init__(self):

pass

def save(self):

print("This is from A")

class B(A):

def __init__(self):

pass

def save(self):

print("This is from B")

class C(A):

def __init__(self):

pass

def save(self):

print("This is from C")

class D(B, C):

def __init__(self):

pass

# def save(self):

# print("This is from D")

d = D()

d.save()

This is from B

print('-------------------------------------这是分隔线---------------------------')

class A:

def __init__(self):

pass

def save(self):

print("This is from A")

class B(A):

def __init__(self):

pass

# def save(self):

# print("This is from B")

class C(A):

def __init__(self):

pass

def save(self):

print("This is from C")

class D(B, C):

def __init__(self):

pass

# def save(self):

# print("This is from D")

d = D()

d.save()

This is from A

4. Python2.7下新式类搜索顺序-----广度优先顺序

class A(object):

def __init__(self):

pass

def save(self):

print("This is from A")

class B(A):

def __init__(self):

pass

def save(self):

print("This is from B")

class C(A):

def __init__(self):

pass

def save(self):

print("This is from C")

class D(B, C):

def __init__(self):

pass

# def save(self):

# print("This is from D")

d = D()

d.save()

This is from B

print('-------------------------------------这是分隔线---------------------------')

class A(object):

def __init__(self):

pass

def save(self):

print("This is from A")

class B(A):

def __init__(self):

pass

# def save(self):

# print("This is from B")

class C(A):

def __init__(self):

pass

def save(self):

print("This is from C")

class D(B, C):

def __init__(self):

pass

# def save(self):

# print("This is from D")

d = D()

d.save()

This is from C

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值