---恢复内容开始---

一切  万物皆对象。

面向对象其实只是一种编程方式。面向对象式编程可以在很大程度上帮助我们节省时间内存,等问题是我们的代码简单明了。

那么首先定义的格式为class

class game:
n="woshi n"
name="wocao"
def __init__(self, name, job, wuqi, money = 450,blood=100):
# 构造函数
# 在实例化时做一些类的初始化工作
self.name = name # 实例变量(静态属性) 作用域就是实例本身
self.job = job
self.wuqi = wuqi
self.money = money
self.blood = blood def buy_gun(self, gun_name): # 类的方法 (功能)动态属性
self.wuqi = gun_name
print("%s - %s - %s money:%s blood: %s" % (self.name, self.job, self.wuqi, self.money, self.blood)) liqing = game('liqing','please','xxx')
liqing.buy_gun('ak47')
liqing.name='liushuyuan' # 由此看出 先找实例 在找类变量
liqing.buy_gun('ak47')

构造函数就是为了在实例化的时候为变量赋值

那么假如

当类已经构建完毕  我有想加一个属性呢?
答案显然是可以的 这就取决于你是想给类变量赋值还是给实例变量赋值了
并且现在还有一个问题,当类变量和实例变量相同时我们在修改的时候都是r1.name时会发生什么呢
liqing.name='liushuyuan' # 由此看出   先找实例 在找类变量
liqing.buy_gun('ak47')
# 重新赋值
# 当类已经构建完毕 我有想加一个属性呢?
liqing.xuemaojiao = " 喵喵喵"
print(liqing.xuemaojiao)

如上面代码所示,先找实例 在找类变量是我们的准则

并且属性的增删改查都可以实现


1.2析构函数

析构函数和构造函数的作用相反

析构函数:在实例释放和销毁的时候执行通常做一些扫尾工作如关闭一些数据库链接打开的临时文件

    def __del__(self):         #  析构方法 在程序结束的时候被默认执行(自动)
print("彻底死了")

我们看一个完整的代码

class game:
n="woshi n"
name="wocao"
def __init__(self, name, job, wuqi, money = 450,blood=100):
# 构造函数
# 在实例化时做一些类的初始化工作
self.name = name # 实例变量(静态属性) 作用域就是实例本身
self.job = job
self.wuqi = wuqi
self.money = money
self.blood = blood
def __del__(self): # 析构方法 在程序结束的时候被默认执行(自动)
print("彻底死了")
def buy_gun(self, gun_name): # 类的方法 (功能)动态属性
self.wuqi = gun_name
print("%s - %s - %s money:%s blood: %s" % (self.name, self.job, self.wuqi, self.money, self.blood)) liqing = game('liqing','please','xxx')
liqing.buy_gun('ak47')

那么结构是这样的

liqing - please - ak47   money:450  blood: 100
彻底死了

现在  作用效果显而易见了

1.3私有属性

假如你设计了一个游戏,你的血量如果在外面可以任意改的时候,你这个游戏就会被别人的一句代码给你直接写死了这个游戏还玩个毛线啊

那么此时私有属性就出来了 ,顾名思义私有属性就是只能在内部修改,方法为在变量前面加上两条下划线。

当我的属性(变量)不想被外面调用时我就可以用到这种方法

class cs:
def __init__(self, name, age, wuqi, blood=100):
self.__name = name
self.age = age
self.wuqi = wuqi
self.__blood = blood
def shoot(self):
self.__blood = self.__blood-20 r1 = cs('liqing','6','ak47')
r1.shoot()

如代码所示当标记为私有变量的时候 从外部不能访问  只能内部调用

1.4私有方法

私有方法也是在函数名前加上两个下划线

2.1继承

我们的代码就是要尽量减少重复代码,那么当多个类都有相同的代码时我们又用什么方法来解决呢

那么就是继承了

子类可以继承父类的所有东西,并且还可以对父类的方法重新构建。

class People:
def __init__(self, name, age, word):
self.name=name
self.age=age
self.word=word def jiao(self):
print('我们一起学猫叫')
class man(People):
def jiao_(self):
print("我是男人")
People.jiao(self)
print("piao piao piao") r1 = man('liqing', 6, 'china')
r1.jiao_()

此时我在man方法种就可以任意的调用父类中的方法了

那么当我子类的方法名称于父类相同时,优先执行子类的方法

如代码所示我们如果先对父类的方法重新增加功能的话就需要People.jiao()

然后在增加就可以了。

2.2对构造函数进行重构

    def __init__(self, name, age, word, money):
People.__init__(name, age, word)
self.money = money
        # 或者
super(man,self).__init__(name, age, word)

3.1新式类与经典类

# class people:  # 经典类
class people(object): # 新式类 super(people, self).__init__() 新式类写法

多继承。。。。。。。。待更新

python 之路 面向对象的更多相关文章

  1. python之路----面向对象的多态特性

    多态 多态指的是一类事物有多种形态 动物有多种形态:人,狗,猪 import abc class Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @abc.abstr ...

  2. 百万年薪python之路 -- 面向对象之继承

    面向对象之继承 1.什么是面向对象的继承 继承(英语:inheritance)是面向对象软件技术当中的一个概念. 通俗易懂的理解是:子承父业,合法继承家产 专业的理解是:子类可以完全使用父类的方法和属 ...

  3. python之路——面向对象(进阶篇)

    面向对象进阶:类成员.类成员的修饰符.类的特殊成员 类成员 类成员分为三大类:字段.方法.属性 一.字段 静态字段 (属于类) 普通字段(属于对象) class City: # 静态字段 countr ...

  4. python之路——面向对象(基础篇)

    面向对象编程:类,对象 面向对象编程是一种编程方式,此编程方式的落地需要使用 "类" 和 "对象" 来实现,所以,面向对象编程其实就是对 "类&quo ...

  5. python之路——面向对象

    面向过程 VS 面向对象 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了写程序的复 ...

  6. python之路--面向对象(三)

    一 isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象.由于Python中一切都是类,所以 ...

  7. python之路---面向对象编程(二)

    类的继承 1.在python3中,只有新式类,新式类的继承方式为:广度优先.而python2中,经典类的继承方式为:深度优先.那么我们来看看深度优先和广度优先的区别吧 如下图,为类之间的继承关系.B, ...

  8. python之路---面向对象编程(一)

    一.设计思想的发展 面向机器(代码复杂,效率低,学习成本高,开发周期长)-------->面向过程(扩展性差,不适用多变的需求改变)----------->面向对象(扩展性好,但是可控性差 ...

  9. python之路----面向对象进阶一

    一.isinstance和issubclass isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() i ...

  10. python之路----面向对象中的内置函数

    property属性 什么是特性property property是一种特殊的属性,访问它时会执行一段功能(函数)然后返回值 例一:BMI指数(bmi是计算而来的,但很明显它听起来像是一个属性而非方法 ...

随机推荐

  1. pytest文档40-pytest.ini配置用例查找规则(面试题)

    前言 面试题:pytest如何执行不是test开头的用例?如执行 xxx_*.py这种文件的用例. pytest.ini 配置文件可以修改用例的匹配规则. pytest命令行参数 cmd打开输入pyt ...

  2. 【服务总线 Azure Service Bus】ServiceBus 队列中死信(DLQ - Dead Letter Queue)问题

    Azure Service Bus 死信队列产生的原因 服务总线中有几个活动会导致从消息引擎本身将消息推送到 DLQ. 如 超过 MaxDeliveryCount 超过 TimeToLive 处理订阅 ...

  3. 编译安装tree命令

    查看当前的tree [12:33:33 root@C8[ ~]#rpm -qi tree Name : tree Version : 1.7.0 Release : 15.el8 Architectu ...

  4. matplotlib作图 归零编码、曼切斯特编码、非归零编码、差分曼切斯特编码

    效果图 代码 import matplotlib.pyplot as plt config = { 'color': 'black', 'lw': 5, } def init(): plt.figur ...

  5. C#Socket通讯(2)

    前言 前面已经把游戏的服务端UI搭起来来了,现在需要实现的就是编写服务端控制器与客户端的代码,实现服务端与客户端的数据传输,并将传输情况显示在服务端的UI上 服务端控制器完整代码 private st ...

  6. 浏览器缓存引起的bug总结

    缓存原理 浏览器缓存分为强缓存和协商缓存 先检查是否过期,没有过期直接使用本地缓存.如果过期,查看是否使用协商缓存 协商缓存流程: 后端返回headers: ETag: W/"1e3-175 ...

  7. dbvis 导出表结构 xls

    1.dbvis 可以导出多种格式的文件,如SQL.XLS.TXT.HTML.JSON.CSV及XML. 需求场景(本场景是实际场景引申的场景,此处导出xls): 最近,遇到一个需求需要将表的结构数据导 ...

  8. 常用手册或官网的url

    1.mysql--> https://www.mysql.com/ 2.菜鸟教程--> http://www.runoob.com 3.maven官网--> https://mave ...

  9. Redis分布式锁及分区

    以下内容是翻译的官网文档RedLock和分区部分,可以简单了解分布式锁在redis如何实现及其方式 redis分区的方法 redis实现的分布式锁RedLock算法,分布式锁,即在多个master上获 ...

  10. 论文解读《Plug-and-Play Priors for Model Based Reconstruction》

    这篇论文主要概述了model-baesd的方法在解决图像恢复的逆问题的很好的效果,降噪问题其实就是前向模型的H是一个恒等算子,将state-of-the-art的降噪算法(先验模型)和相对应的逆问题的 ...