8.python之面相对象part.1(初识类与对象)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了8.python之面相对象part.1(初识类与对象)相关的知识,希望对你有一定的参考价值。
一.类和对象的概念。
什么是类
类就是把一类事物相同的特征和动作整合到一起就是类比如说“人”就是一个类。
什么是对象
对象就是基于类创建出来的一个具体存在的事物这个事物包含了将其创造出来的类的特征和动作。
类与对象有什么关系一切的对象都是由类产生的假如说造一支笔首先要有一个造笔的模版上帝制造人也是一样制造一个人也需要一个造人的模版这个模板就是人的“类”然后根据类的定义来产生一支支笔和一个个的人。
什么是实例化
由类产生对象的过程就是实例化类实例化的结果就是一个对象对象也被称为实例。
二.关于类的基本知识。
1.如何创建一个类
# -*- coding:utf-8 -*-
使用class语法定义了一个类
class person:
pass
使用person类实例化出一个对象。
ayumi就是从person类中实例化出的一个对象。
ayumi = person()
2.什么是经典类与新式类
在python2.x版本中类分为两种分别是经典类和新式类而在python3以上的版本中没有这种概念所有的类都是新式类。
经典类和新式类最大的不同就是新式类必须继承一个父类及时不指定父类也必须继承一个名为object的父类
3.关于类的属性。
给一个类添加一个属性。
#!/usr/bin/python2.7
# -*- coding:utf-8 -*-
class person:
pass
person.career = "diva"
print person.career
>>>diva
#删除类中的一个属性。
del person.career
关于类中的一些内置方法。
__init__ 构造方法当使用类生成一个对象的时候就会自动执行__init__方法下的代码。
一般情况下在生成对象的时候可以使用构造方法来创建每个对象的属性特征。
#!/usr/bin/python2.7
# -*- coding:utf-8 -*-
class person:
def __init__(self,career):
self.career = career
def show_carrer(self):
print self.career
ayumi = person("diva") #创建一个对象时__init__ 构造方法会被执行。
ayumi.show_carrer()
>>>diva
那什么是self呢
这里的self指的就是创建出来的对象的本身。也就是创建出来的对象自己 不知道这么说够不够清楚。。。
__name__获取类的名称。
__doc__:获取类的注释信息。
__base__: 获取这个类的第一个父类。
__bases__: 返回当前类所有的父类以元组的方式返回。
__dict__:以字典的方式返回一个类的属性。
__module__:返回当前类所属的模块。
__class__:获取一个对象所属的类。
__del__:解构方法当一个对象被删除或者被python的垃圾回收机制清除之前会执行这个方法下的代码, 在python的解释器中一个对象要被垃圾回收机制回收掉或者这个对象要在内存中彻底被清除必须要满足一个条件就是这个对象的引用计数必须为0当该对象所有的引用都被清除掉引用计数为0时就会触发__del__方法如果想要在这个对象在被删除时做些什么事就可以在解构方法中实现。
补充说明每个对象只能调用一次解构器
下面有个例子可以轻松看懂解构方法的原理
class num:
count = 0
def __init__(self):
num.count += 1
def __del__(self):
num.count -= 1
@classmethod
def show_count(cls): 定义了一个类方法这样类就可以直接调用show_count方法去查看当前的 return num.count count值。
首先定义了一个num类。
print num.show_count()
>>>0
num类中count对应的值为0,接下来我们通过num类实例化出两个对象分别名为a和b。
a = num()
b = num()
实例化出两个对象之后调用num的类方法show_count来查看下当前count的值变成了几
print num.show_count()
>>>2
这个不需要做过多的解释了实例化出两个对象就相当于执行了这个类的两次__init__构造方法。
接下来手动删除一个刚刚我们使用num类创建出来的对象。
del a
print num.show_count()
>>>1
num类中的count属性直接被1从2变成了1这就说明__del__解构器下的代码被执行了
在这还需要补充一点关键字del删除一个对象的原理就是将一个对象的引用计数置为0引用计数一旦置为0那么这个对象就回被python内部的垃圾回收机制所回收
4.对象究竟有什么作用
对象用于做属性的引用。
每个对象都有自己的数据属性python的class机制会把类相关的函数绑定到由这个类生成的对象上称之为对象的方法。
#!/usr/bin/python2.7
# -*- coding:utf-8 -*-
class person:
def __init__(self,career):
self.career = career
def show_carrer(self):
print self.career
ayumi = person("diva")
ayumi.show_carrer()
好比刚刚将person这个类实例化出一个叫ayumi的对象show_carrer这个原本是类中定义的函数由person这个类生成的ayumi对象就具有show_carrer这个方法。
本文出自 “reBiRTH” 博客,请务必保留此出处http://suhaozhi.blog.51cto.com/7272298/1912560
以上是关于8.python之面相对象part.1(初识类与对象)的主要内容,如果未能解决你的问题,请参考以下文章
8.python之面相对象part.4(接口继承的思想设计,这种东西也叫抽象类)
补8.python之面相对象part.7(类相关函数的补充)
8.python之面相对象part.8(__slots__属性)