python面相对象编程 受保护_python面向对象编程基础

1、oop的意义:oop就是代码的重用:分解代码,最小化代码的冗余以及对现存的代码进行定制来编写程序。而不是实地的修改代码,或者从头开始

2、继承搜索在那里查找属性:继承搜索会先在实例对象中寻找属性,然后 才是创建实例的类,之后是所有较高的超类,由对象树底端到顶端,并且至右侧。当属性首次找到时,搜索就会停止。因为在此过程中变量名的最低版本会获胜。

3、类对象和实例对象有什么不同:类和实例对象都是命名空间(由作为属性的变量包 )俩者 主要区别是,类是建立多个实例的工厂,类也支持运算符重载方法,由实例继承,而且其中的任何函数视为处理实例的特殊方法

4、为什么类方法函数中的第一个参数特殊:类方法函数中的第一个参数之所以特殊,是因为他总是接受将方法调用视为隐含主体的实例对象。按照惯例,通常称为self.因为方法函数默认zonshi 含有这个隐含的主体对象环境,之所以是这个面向对象。也就是色好几用来处理或者修改对象

5、__init__方法的作用:每次类实例创建时,python会自动调用它,这也称为构造函数。除了明确传入类的名称的任何参数外,还会因性道德传入新的实例。

6、类有两个属性,一个是__class__,另外一个是__base__

7、提取一个类的全部属性的工具类

class AttrDisplay:

def gatherAttr(self):

attr = []

for key in sorted(self.__dict__):

attr.append('%s=%s' %(key,getattr(self,key)))

def __str__(self):

return '[%s:%s]' %(self.__class_.name,self.getAttr())

8、对象的持久化

pickle 任意对象和字节串之间的序列化

dbm 实现一个可通过键访问的文件系统,以存储字符串

shelve 使用另两个按照键 把python对象 存储到一个文件中

class Person(): pass

Tom = Person()

Jim = Person()

John = Person()

import shelve

db = shelve.open("persondb")

for object in (tom,Jim,John):

db[字符串]=object

db.close()

9、调用类的方法的两种方法

instancename.methodname(parameters)

classname.methodname(instancename,parameters)

10、抽象超类,需要由子类填充方法,他们也可以以特殊的类语法来实现

class Super:

def delegate(self):

self.action()

class Provider(Super):

def action(self):

print('in Provicer.action')

x = Provider()

x.delegate() #输出:in Provicer.action

11、Python 2.6和Python3.0的抽象超类

in python3.0

from abc import ABCMeta,abstractmethod

class Super(metaclass = ABCMeta)

@abstractmethod

def method(self,...):

pass

例如:

from abc import ABCMeta,abstractmethod

class Super(metaclass=ABCMeta):

def delegate(self):

self.action()

@abstractmethod

def action(self):

pass;

class Sub(Super):

def action(self):

print('spam')

x = Sub() # 不能通过一个抽象类创建一个实例,除非抽象类的抽象方法以及在子类定义

x.delegate()#输出:spam

in python2.6

class Super

__metaclass = ABCMeta

@abstractmethod

def method(self,...):

pass

12、命名空间:完整内容

察看继承链

# file classtree.py

def classtree(cls,indent):

print('.'*indent+cls.__name__)

for supercls in cls.__base__:

classtree(supercls,indent+3)

def instancetree(inst):

print('Tree of %s ' %inst)

class(supercls,indent+3)

在python3.0中会将object打印出来

13、文档字符串

modulename.__doct__ #察看文档顶端的__doc__

modulename.functioname.__doc__#察看函数__doc__

modulename.classname.__doc__#察看类__doc__

modulename.classname.functionname.__doc__#察看类方法__doc__

或者 通过help(modulename)察看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值