第一章 - __init__()方法

1.1 隐式的基类—object

每个Python类的定义都会隐式继承object

类的定义如下:

class x:
	pass

打开Python自带的IDE,试验一下

>>> class x:
	pass

>>> x.__class__
<class 'type'>
>>> x.__class__.__base__
<class 'object'>

代码解释: 首先定义一个名为x的类,然后查看x的类型,它是type类,最后是查看x的超类(即父类)

  • 知识延伸
__class__和type()的效果是一样的,都用来查看类型的
__base__表示当前类的超类,而__bases__表示当前类的所有超类
  • 思维延伸–type和object的关系

在Python的世界中,object是父子关系的顶端,所有的数据类型的父类都是它type是类型实例关系的顶端,所有对象都是它的实例的
例如:
object是一个type,object is and instance of type。即Object是type的一个实例。

>>> object.__class__  # object的类型
<class 'type'>
>>> object.__bases__  # object的超类,显然它是没有超类的,因为它是继承关系的顶端
()

type是一种object, type is kind of object。即Type是object的子类。

>>> type.__class__  # type的类型
<class 'type'>
>>> type.__bases__  # type的超类,它继承于object类
(<class 'object'>,)

python有一副类型关系图,如下:
关系图
强烈推荐观看:type和object的区别


基类中的__init__()方法

对象的生命周期主要包括创建、初始化和销毁.

object作为所有类的基类,已经为__init__()方法提供了默认实现.

对于继承object的子类,总可以对它的属性进行扩展.

>>> class Rectangle:  # 默认继承object类
	def area(self):
		return self.length*self.width  # 定义属性
>>> r = Rectangle()   # 示例化矩形
>>> r.length, r.width = 13, 8  # 初始化矩形实例的属性
>>> r.area()  # 计算面积
104

虽然上述延迟赋值在python合法,但是强烈不推荐这样写.正确做法是将属性写在类的__init__()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值