Python基础-面向对象1
class Bar:
def fansik(self, name, age):
print(name, age) obj = Bar()
print(obj.fansik('fanjinbao', 19))
一、定义
函数:
def + 函数名(参数) 面向对象:
class => 名字叫Bar的类
def => 名字叫fansik的方法
#### self
二、执行
函数:
函数名()
面向对象:
obj = Bar() # 创建中间人(对象、实例)
obj.fansik 三、面向对象的封装实例
class Person():
def __init__(self, name, age, blood='O'):
self.name = name
self.age = age
self.blood = blood
def outinfo(self):
print('姓名:%s\n年龄:%s\nblood type:%s' % (self.name, self.age, self.blood))
fansik = Person('fansik', 89)
fansik.outinfo()
四、面向对象的继承实例
class Father():
def ff1(self):
print('fangfa1') def ff2(self):
print('fangfa2') def ff3(self):
print('fangfa3') class Son(Father): def ff4(self):
print('fangfa4') fansik = Son()
fansik.ff1()
fansik.ff2()
fansik.ff3()
fansik.ff4()
五、重写父类方法
class Father():
def ff1(self):
print('fangfa1') def ff2(self):
print('fangfa2') def ff3(self):
print('fangfa3') class Son(Father):
# 重写父类方法
def ff3(self):
# 引入父类的方法
# super(Son, self).ff3()
# 或者使用这种方式
# Father.ff3(self)
print('fangfa4') fansik = Son()
fansik.ff1()
fansik.ff2()
fansik.ff3()
六、Python中支持多继承
a、左侧有限
b、一条道走到黑
c、同一个根是,根最后执行
class BaseRequest:
pass class RequestHandler(BaseRequest):
def serve_forever(self):
print('RequestHandler.serve_forever')
self.process_request()
def process_request(self):
print('RequestHandler.prcess_request') class Minx:
def process_request(self):
print('minx.process_request') class Son(Minx, RequestHandler):
pass obj = Son()
obj.serve_forever()
执行结果:
RequestHandler.serve_forever
minx.process_request
说明:serve_forever()中的self.process_request()执行的是Son的process_request()所以输出是minx.process_request 类成员:
字段
- 普通字段,保存在对象中,执行职能通过对象访问
- 静态字段,保存在类中,执行可以通过对象访问,也可以通过类访问
方法
- 普通方法,保存在类中,由对象来调用,self --> 对象
- 静态方法,保存在勒种,由类直接调用
- 类方法,保存在勒种,有类直接调用,cls --> 当前类
应用场景:
如果对象中需要保存一些值,执行某功能时,需要使用对象中的值---->普通方法
不需要任何对象值,
class Fansik:
# 静态字段
country = '中国'
# 构造方法
def __init__(self, name):
# 普通字段
self.name = name # 普通方法
def common_method(self, name, age):
print(name, age) # 静态方法
@staticmethod
def static_method(x, y):
print(x, y) # 类方法
@classmethod
def class_method(cls):
print(cls)
print('class_method') fan = Fansik('fanjinbao')
print(Fansik.country)
print(fan.country)
Fansik.static_method(1, 2)
fan.static_method(1, 2)
fan.common_method(1, 2)
Fansik.class_method()
分页的简单实现:
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 = [x for x in range(1000)]
while True:
page = int(input('要查看的页码:'))
obj = Pagenation(page)
print(li[obj.start:obj.end])
Python基础-面向对象1的更多相关文章
- python基础——面向对象编程
python基础——面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的 ...
- python基础——面向对象进阶下
python基础--面向对象进阶下 1 __setitem__,__getitem,__delitem__ 把对象操作属性模拟成字典的格式 想对比__getattr__(), __setattr__( ...
- python基础——面向对象进阶
python基础--面向对象进阶 1.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 ...
- python基础——面向对象的程序设计
python基础--面向对象的程序设计 1 什么是面向对象的程序设计 面向过程的程序设计的核心是过程,过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优 ...
- Python 基础 面向对象之二 三大特性
Python 基础 面向对象之二 三大特性 上一篇主要介绍了Python中,面向对象的类和对象的定义及实例的简单应用,本篇继续接着上篇来谈,在这一篇中我们重点要谈及的内容有:Python 类的成员.成 ...
- python基础--面向对象基础(类与对象、对象之间的交互和组合、面向对象的命名空间、面向对象的三大特性等)
python基础--面向对象 (1)面向过程VS面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. ...
- Python自动化 【第七篇】:Python基础-面向对象高级语法、异常处理、Scoket开发基础
本节内容: 1. 面向对象高级语法部分 1.1 静态方法.类方法.属性方法 1.2 类的特殊方法 1.3 反射 2. 异常处理 3. Socket开发基础 1. ...
- python基础-面向对象编程
一.三大编程范式 编程范式即编程的方法论,标识一种编程风格 三大编程范式: 1.面向过程编程 2.函数式编程 3.面向对象编程 二.编程进化论 1.编程最开始就是无组织无结构,从简单控制流中按步写指令 ...
- 第八章:Python基础の面向对象(二)
本課主題 面向对象的多态 面向对象的成员 成员修饰符 特殊成员 面向对象其他应用 异常处理 设计模式与单例模式 面向对象的多态 指定参数类型只是多态的一种表现 另外一种是允许自己类型和自己的子类型(典 ...
- python基础-面向对象(装饰器)
属性: @property @method_name.setter @method_name.deleter 三个标签都是放在方法的上面来使用,且方法名要和后续使用的 变量名字相一 ...
随机推荐
- STL源代码剖析——STL算法stl_algo.h
前言 在前面的博文中剖析了STL的数值算法.基本算法和set集合算法.本文剖析STL其它的算法,比如排序算法.合并算法.查找算法等等.在剖析的时候.会针对函数给出一些样例说明函数的使用.源代码出自SG ...
- Unix系统编程()lseek系统调用
之前知道lseek这个系统调用可以改变文件的偏移量,或者叫偏移量或指针. 文件偏移量是指执行下一个read或者write操作的文件起始位置,会以相对于文件头部起始点的文件当前位置来表示. 除非指定了O ...
- 【Mac + GitHub】之在另一台Mac电脑上下载GitHub的SSH链接报错
当输入git命令github项目时报错: ⇒ git clone git@github.com:/TX-Class.git Cloning into 'TX-Class'... Warning: Pe ...
- linux常用指令--防火墙
centos7 iptables : 如果你想使用iptables静态路由规则,那么就禁用centos7默认的firewalld,并安装ipteables-services, 启用iptables和 ...
- Expectation Maximization(EM)算法note
EM算法,之前上模式识别课上,推导过,在<统计学习方法>中没耐性的看过几次,个人感觉讲的过于理论,当时没怎么看懂,后来学lda,想要自己实现一下em算法,又忘记了,看来还是学的不够仔细,认 ...
- WCF系列 Restful WCF
由于项目需要,需要完成移动端与服务端以json格式的数据交互,所以研究了Restful WCF相关内容,以实现ios端,android端与浏览器端能够与后台服务交互. 那么首先我们来了解下什么是Res ...
- Docker:通过Git部署
这是我翻译的国外博客,如需转载请注明出处和原文链接 我一直听说Docker是个很棒的新事物,但是我一直提不起兴趣,直到我遇到一个切实的问题: 如果通过Docker来部署 Scout ,这么做会轻松一些 ...
- ORM框架(对象关系映射)
Entity Framework 学习初级篇1--EF基本概况 http://www.cnblogs.com/xray2005/archive/2009/05/07/1452033.html ORM ...
- (转)ThreadLocal
转自:http://blog.csdn.net/lufeng20/article/details/24314381 Thread同步机制的比较 ThreadLocal和线程同步机制相比有什么优势呢?T ...
- 探讨instanceof实现原理,并用两种方法模拟实现 instanceof
在开始之前先了解下js数据类型 js基本数据类型: null undefined number boolean string js引用数据类型: function object array 一说ins ...