注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性。
本文阅读时间约为3分钟。
对象的基本概念
对象object——既表示客观世界问题空间中的某个具体事物又表示软件系统解空间中的基本元素。
对象=属性+方法
对象以id作为标识,既包含数据(属性),又包含代码(方法),是某一类具体事物的特殊实例。
dir(obj)用来查看对象的属性和方法。
a = 1 # a是一个int型数据。
dir(a)
Out[4]:
['__abs__',
'__add__',
'__and__',
'__bool__',
'__ceil__',
'__class__',
'__delattr__',
'__dir__',
'__divmod__',
'__doc__',
'__eq__',
'__float__',
'__floor__',
'__floordiv__',
'__format__',
'__ge__',
'__getattribute__',
'__getnewargs__',
'__gt__',
'__hash__',
'__index__',
'__init__',
'__init_subclass__',
'__int__',
'__invert__',
'__le__',
'__lshift__',
'__lt__',
'__mod__',
'__mul__',
'__ne__',
'__neg__',
'__new__',
'__or__',
'__pos__',
'__pow__',
'__radd__',
'__rand__',
'__rdivmod__',
'__reduce__',
'__reduce_ex__',
'__repr__',
'__rfloordiv__',
'__rlshift__',
'__rmod__',
'__rmul__',
'__ror__',
'__round__',
'__rpow__',
'__rrshift__',
'__rshift__',
'__rsub__',
'__rtruediv__',
'__rxor__',
'__setattr__',
'__sizeof__',
'__str__',
'__sub__',
'__subclasshook__',
'__truediv__',
'__trunc__',
'__xor__',
'bit_length',
'conjugate',
'denominator',
'from_bytes',
'imag',
'numerator',
'real',
'to_bytes']
Python中,万物皆对象。所以Python是纯(完全)面向对象语言。
不同的对象,id不同;若id相同,则是同一个对象。
函数也是对象,比如abs函数就是一个对象。
abs(-1)
Out[5]: 1
id(abs)
Out[6]: 2161154451080
创建对象
对象是类的实例,是程序的基本单元。
要创建一个新的对象,首先必须定义一个类,用以指名该类型的对象所包含的内容(属性和方法)。
同一类的对象具有相同的属性和方法,但这些对象的属性值和id不同。
对象的名称
赋值语句给予对象以名称,对象可以有多个名称(变量引用),但只有1个ID。
例如a = complex(1, 2)。
想实现的属性和方法的封装,是一种数据抽象机制。这种封装机制提高了软件的重用性、灵活性和可扩展性。
对象的引用形式
<对象名>.<属性名>或<对象名>.<方法名>。
可以跟一般的变量一样,用在赋值语句和表达式中。
Python语言动态特征,使得对象可以随时增加或者删除属性和方法。
print(f3.fx, f3.fy)
Out[2]:0.0 4.5
f3.fz = 3.4 # 可以直接赋予f3一个fz属性。
print(f3.fz)
3.4
del f3.fz # 也可以直接删除f3.fz方法。
面向对象编程OOP
面向对象编程是一种程序设计范型,同时也是一种程序开发方法。
程序中包含各种独立而又能互相调用的对象,每个对象都能接受、处理数据,并将数据传递给其它对象。
在面向对象编程中,数据和对数据的处理都被封装到对象里面,所有对数据的处理都依附于对象;相比而言,传统程序设计则是将程序看作一系列函数或指令的集合,它是把数据和对数据的处理分离开来的。
To be continued.