新式类中的多继承需要注意的

以下只针对新式类,旧式类则无下列限制

 

多继承不可重复继承(或者说既当孙子又当儿子或者从孙子等等)

class A:

    pass

class B(A):

    pass

class C(A,B):

    pass

test=C() #重复继承  ,c继承了A表明他是a的儿子,但又继承了b表明他是a的孙子,那他到底是孙子还是儿子?(但是此处如果改为C(B,A)则不报错,也就是说继承顺序中排在后面的辈分一定不小于排在前面的,不过这样的话多此一举,只是不报错而已)

 

第二个错误是,在新式类中,继承顺序前后矛盾

class a(object):

    pass

class b(object):

    pass

class c(a,b):

    pass

 

class d(b,a):

    pass

 

class e(c,d):

    pass

#前面c已经声明了继承顺序是a,b,后面d却违背了前面拟定的继承顺序。因为新式类中是以广度优先(c3算法)的原则确定实例属性,所以不仅要理清祖先谱中的辈分关系,还要理清同辈之间的前后次序,不能一会儿在前一会儿再后

 

转载于:https://www.cnblogs.com/saolv/p/8961269.html

Python 2.x 和 Python 3.x 是 Python 语言的两个主要版本。它们在语法、函数和标准库等方面有一些不同之处。下面是它们之间的一些主要区别: 1. 打印函数 在 Python 2.x 中,打印函数是 `print`,而在 Python 3.x 中,它被改为了 `print()` 函数。在 Python 2.x 中,您可以像这样使用 `print` 函数: ```python print "Hello, world!" ``` 在 Python 3.x 中,您需要在 `print` 函数中使用圆括号: ```python print("Hello, world!") ``` 2. 整数除法 在 Python 2.x 中,整数除法的结果将四舍五入为最接近的整数。例如,`5/2` 的结果为 `2`。在 Python 3.x 中,整数除法将保留小数部分,结果为浮点数。例如,`5/2` 的结果为 `2.5`。 3. xrange() 函数 在 Python 2.x 中,有一个称为 `xrange()` 的函数,它返回一个迭代器,用于生成整数序列。在 Python 3.x 中,这个函数被删除了,而 `range()` 函数现在返回一个类似于 Python 2.x 中 `xrange()` 的迭代器。 4. Unicode 字符串 在 Python 2.x 中,字符串类型有两种:ASCII 字符串和 Unicode 字符串。默认情况下,字符串类型被定义为 ASCII 字符串。在 Python 3.x 中,字符串类型被定义为 Unicode 字符串,这意味着它们可以包含任意的 Unicode 字符。 5. 异常处理语法 在 Python 2.x 中,异常处理语法是这样的: ```python try: # some code that may raise an exception except ExceptionType, e: # handle the exception ``` 在 Python 3.x 中,这个语法被更改为: ```python try: # some code that may raise an exception except ExceptionType as e: # handle the exception ``` 这里,异常类型被指定为 `as` 关键字的参数,而不是 `,` 分隔符。 这些是 Python 2.x 和 Python 3.x 之间的一些主要区别。当迁移代码或选择使用哪个版本时,您应该考虑这些差异以及您的项目的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值