关于Python的面向对象
本文是我第一个关于代码的文章作品,我会逐个解释介绍我所写的内容,尽量用一种通俗易懂的文字来阐述使得我的讲述便于大家理解。
PS:我以前一直觉得写此类文很麻烦,宁愿花时间去写小说或者研究游戏代码,也不想花很多时间去做一篇需要很严谨的文章。
面向对象
“面向对象”,到处都能听到这个词的解释。什么是对象,什么是面向对象,又怎么面向对象,这些到处都可以看到的各种定义我就不解释了。
对象(object)
具体解释对象是什么是一件比较麻烦的事。而实际上,在python中,没有什么不是对象。即你输入一个数字,它是int对象;在数字旁加上“ ’ ”(引号),它是str对象;再在前方加上一个“b”,它是一个bytes对象。
用print方法打印一个对象,即可看到它的样子。
试运行以下代码:
class A:
pass
a = A()
print(a)
print(type(a))
print(A)
根据输入结果看来,其实很多对象样子是我们不想看到的样子。python的基本类型都可以直接打印看到结果,而其他对象的打印出来,我们看到的实际上是和html标签一样的<__main__.xxx object at 0x000001D3F3E2C8C8>
,这就是对象,而它是什么对象,那就是紧跟着__main__.的xxx。
输出结果:
<__main__.A object at 0x000001D3F3E2C8C8>
<class '__main__.A'>
<class '__main__.A'>
第一个输出的,就是a这个变量所绑定的对象;
第二个输出的,是a的类型,为A类;
第三个输出的,是A类(这个A类,也是一个对象)。
因此,我们可以把对象进行分“类”,所属的类,就是对象分类的依据。而获取对象的办法,就是通过类实例化出一个对象:“()”。
如以上的a,通过类名A加括号的方式来实例化对象并绑定。
如果还不信,可以id()
一下,看看对象在内存中存储的位置,没有加载的程序永远只是程序,程序跑起来了才有已经创建好的对象,此时才会占用内存。
类(class)
我用过这样一道题来考察过对对象的理解,其实很简单,但很容易出错:
class 物(object):
def __init__(self, 价格: int, 名称: str):
self.价格 = 价格
self.名称 = 名称
class 手机(物):
def __init__(self, 价格: int, 品牌: str, 名称: str):
super().__init__(价格, 名称)
self.品牌 = 品牌
self.配件 = []
def 搭配(self, 东西):
self.配件.append(东西)
self.价格 += 东西.价格
class 耳机(物):
def __init__(self, 价格: int, 品牌: str, 名称: str):
super().__init__(价格, 名称)
self.品牌 = 品牌
class iphone(手机):
def __init__(self):
价格 = 9000
品牌 = '苹果'
名称 = 'iphone'
super().__init__(价格, 品牌, 名称)
class Airpods(耳机):
def __init__(self):
价格 = 1000
品牌 = '苹果'
名称 = 'Airpods'
super().__init__(价格, 品牌, 名称)
class 黑天鹅(耳机):
def __init__(self)