一、创建类

语法格式:

class 类名:
pass

创建方法:

1 构造方法

 class Person:

     def __init__(self, name,age):

         #构造方法,构造方法的特性, 类名() 自动执行构造方法

         self.n = name
self.a = age

 执行构造方法:

 obj = Person('李欢', 18)

2 普通方法:

 class Person:

     def show(self):
pass

执行普通方法:

 obj = Person()
obj.show()

二、封装

self代指obj,指调用方法的调用者

 class Bar:
def __init__(self, n,a):
self.name = n
self.age = a
self.xue = 'o' obj1 = Bar('alex', 123) obj2 = Bar('eric', 456)

三、继承

继承格式:

 class 父类:    #基类
pass class 子类(父类):  #派生类
pass

重写父类方法后,希望执行父类方法和重写后的方法。

方法一: super(子类, self).父类中的方法(...)
方法二: 父类名.父类中的方法(self,...)
 class f:
def eat(self):
print('Eating') def sleep(self):
print('f is sleeping') class s(f):   #在括号中加入要继承的父类
def sleep(self):    #重写父类方法
super(s,self).sleep() #方法一
print('s is sleeping')
f.sleep(self) #方法二 obj = s()
obj.sleep()
obj.eat()

支持多继承

多继承特点:

a. 左侧优先
b. 一条道走到黑
c. 同一个根时,根最后执行
 class BaseReuqest:

     def __init__(self):
print('BaseReuqest.init') class RequestHandler(BaseReuqest):
def __init__(self):
print('RequestHandler.init')
BaseReuqest.__init__(self) def serve_forever(self):
# self,是obj
print('RequestHandler.serve_forever')
self.process_request() def process_request(self):
print('RequestHandler.process_request') class Minx: def process_request(self):
print('minx.process_request') class Son(Minx, RequestHandler): #按照从左到右,一条线走到底,如果有相同的根,则根最后执行
pass obj = Son() # init
obj.serve_forever()

obj = Son进行实例化时,先自动执行init方法,Son类中没有init,则在第一个父类中找init方法,Minx中没有init,去第二个父类中找init方法,以此执行完init方法之后,再去调用server_forever()普通方法。

四、类成员

字段

  • 静态字段

    静态字段保存在类,可以通过对象访问,也可以通过类访问。

  • 普通字段

    普通字段保存在对象中,只能通过对象访问。

例:

 class Province:
country = 'China' #静态字段
def __init__(self,name):
self.name = name #普通字段 obj = Province('beijing')
print(obj.name)
print(Province.country)

方法

  • 普通方法

    普通方法保存在类中,由对象来调用。self表示对象

  • 静态方法

    静态方法保存在类中,由类直接调用

  • 类方法

    类方法保存在类中,由类直接调用,cls代指当前类

例:

 class foo:

     def bar(self):          #普通方法,self是对象
print('ok') @staticmethod #静态方法
def sta():
print('') @staticmethod #静态方法
def stat(a,b):
print(a,b) @classmethod #类方法
def aaa(cls):      #cls是类名
print('class method') obj = foo()
obj.bar()
foo.sta()
foo.stat(1,2)
foo.aaa()

不伦不类——属性

通过加装饰器,以另一种形式访问对应的方法。

 class foo:
@property    #用于执行obj.bar
def bar(self):
print('')
return 666 @bar.setter    #用于执行obj.bar = 123
def bar(self,val):
print(val) @bar.deleter    #通过del obj.bar可以定位并访问下面的方法
def bar(self):
print(999) obj = foo()
obj.bar
obj.bar = 123
del obj.bar

实例:

实现分页

 class Pagenation:

     def __init__(self,current_page):

         try:
p = int(current_page)
except Exception as e:
p = 1 self.page = p @property
def start(self):
val = (self.page - 1) * 10
return val @property
def end(self):
val = self.page * 10
return val li = []
for i in range(5000):
li.append(i) while True:
page = input('>>>')
obj = Pagenation(page)
# print(li[obj.start() : obj.end()])
print(li[obj.start:obj.end]) #在方法前加装饰器后,可以直接用 对象名.方法名 访问方法。

Python——面向对象的更多相关文章

  1. python 面向对象初级篇

    Python 面向对象(初级篇) 概述 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 面向对象:对函数进行分类和封装,让开发" ...

  2. Python 面向对象 基础

    编程范式概述:面向过程 和 面向对象 以及函数式编程 面向过程:(Procedure Oriented)是一种以事件为中心的编程思想. 就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现 ...

  3. python面向对象进阶(八)

    上一篇<Python 面向对象初级(七)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  4. python 面向对象(进阶篇)

    上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使 ...

  5. python 面向对象编程学习

    1. 问题:将所有代码放入一个py文件:无法维护 方案:如果将代码才分放到多个py文件,好处: 1. 同一个名字的变量互相不影响 2.易于维护 3.引用模块: import module 2.包:解决 ...

  6. Python面向对象详解

    Python面向对象的"怜人之处" Python的待客之道--谁能进来 Python的封装--只给你想要的 Python的继承--到处认干爹 Python的多态--说是就是

  7. python 面向对象和类成员和异常处理

    python 面向对象 你把自己想象成一个上帝,你要创造一个星球,首先你要把它揉成一个个球,两个直径就能创造一个球 class star: '''名字(name),赤道直径(equatorial di ...

  8. python 面向对象学习

    ------Python面向对象初 下面写一个类的简单实用,以便方便理解类 #python 3.5环境,解释器在linux需要改变 #阅读手册查询readme文件 #作者:S12-陈金彭 class ...

  9. 初识python面向对象

    一.初识python面向对象: class Person: #使用class关键字定义一个类 age=0 #类变量(静态变量) def eat(self,food): #定义一个方法 self.age ...

  10. python 面向对象、特殊方法与多范式、对象的属性及与其他语言的差异

    1.python 面向对象 文章内容摘自:http://www.cnblogs.com/vamei/archive/2012/06/02/2532018.html   1.__init__() 创建对 ...

随机推荐

  1. 关于docker容器是怎样建立新的namespace的。

    最近博客收到了一封交流的私信,感谢您的关注:现在就我理解的docker建立容器时namespace的建立问题做一个 个人的回答: 一,从原理角度来讲: docker创建container,说白了就是l ...

  2. 【转】slice,substr和substring的区别

    首先,他们都接收两个参数,slice和substring接收的是起始位置和结束位置(不包括结束位置),而substr接收的则是起始位置和所要返回的字符串长度.直接看下面例子: var test = ' ...

  3. react native 之 react-native-image-picke的详细使用图解

    最近需要在react native项目中集成相机和相册的功能,于是在网上找了一个好用的第三方插件:react-native-image-picke. 该插件可以同时给iOS和Android两个平台下使 ...

  4. Could not find result map com.lrlz.weixin.dao.SysUserDAO.SysUser

    <select id="selectByTimeCount" resultType="java.lang.Integer" parameterType=& ...

  5. HttpContext详解

    HttpContext 类:封装有关个别 HTTP 请求的所有 HTTP 特定的信息. 在处理请求执行链的各个阶段中,会有一个对象在各个对象之间进行传递,也即会保存 请求的上下文信息,这个对象就是Ht ...

  6. formValidator 表单验证

    作为一名程序员,在解决工作中遇到问题之后,做一些总结是有必要的,既方便总结温习相关知识点,也为广大的程序员提供了一些工作经历,给予同行一面明鉴. 首先,众所周知的,我们需要引用js类库: eg:< ...

  7. The long way

    转眼毕业一年多了,经历的好复杂,从PHP转到了C++,回到了老本行. 虽然PHPDE各种框架已经很熟了,但是仍然感觉这不是我想要的. 回到C++,才发现这才是自己的方向,心也跟着静了下来. 但是莫名的 ...

  8. SOAP Webservice和RESTful Webservice

    http://blog.sina.com.cn/s/blog_493a845501012566.html REST是一种架构风格,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的 ...

  9. Java 第十周学习总结

    20145113<Java程序设计>第十周学习总结 基础知识 1.网络通讯的方式主要有两种 TCP(传输控制协议)方式:需要建立专用的虚拟连接以及确认传输是否正确 UDP(用户数据报协议) ...

  10. JavaScript模块化编程

    为什么模块化很重要?因为有了模块,我们就可以更方便的使用别人的代码,想要什么功能,就加载什么模块. 万事都有规矩,就是规范化! 目前,通行的Javascript模块规范有两种: CommonJS和AM ...