• 继承

子类自动继承父类的所有方法和属性

继承的语法:

 class 类名(父类名)

  pass

1.子类继承父类,可以直接使用父类中已经封装好的方法,不需要再次开发

2.子类可以根据需求,封装自己特有的属性和方法

3.当父类中的方法满足不了子类的需求时,可以对方法进行重写

例如:

import math
#类的继承
class Shape():
def __init__(self,color):
self.color = color def area(self):
return None def show_color(self):
print(self.color) class Circle(Shape):
def __init__(self,color,r):
super().__init__(color)
self.r = r def area(self):
return math.pi*self.r*self.r class Rectingle(Shape):
def __init__(self,color,Height,Width):
super().__init__(color) #记得给super加上()
self.Height = Height
self.Width = Width def area(self):
return self.Width*self.Height circle = Circle('blue',5.0)
print(circle.area())
circle.show_color()
recent = Rectingle('red',5.0,2.0)
print(recent.area())
recent.show_color()

结果:

78.53981633974483
blue
10.0
red
  • __new__方法

python中定义的类,在创建实例对象的时候,会自动执行init()方法,但是在执行init()方法之前,会执行new()方法

__new()__的作用有两个

1.在内存中为内存分配空间

2.返回对象的引用(对象的内存地址)

python解释器在获得引用的时候会将其传递给init()方法中的self

class A():
def __new__(cls, *args, **kwargs):
print('__new__')
return super().__new__(cls) #这里一定要返回,否则init不会被执行
def __init__(self): #这里的self就是new方法中的return返回值
print('__init__') a = A()

结果:

__new__
__init__
  • 单例模式

如果我们创键两个实例a1 = A()

          a2 = A()

那么我们使用id(a1),id(a2)会发现值是不同的,也就是说我们创键了两个实例对象,用了两份内存地址

如果我们想先创建一个实例对象,之后不管创键多少个,返回的永远是第一个实例对象的内存地址,那么我们可以这样实现

#单例模式
#重写new方法很固定,返回值必须是这个
#这样就避免了创键多份
#创键第一个实例的时候,_instance还是None,那么会分配空间创键实例
#此时类属性已经被修改,_instance不再为None
#那么当后面实例属性被创建的时候,由于_instance不为None
#则返回第一个实例对象的引用,即内存地址
class B():
_instance = None
def __new__(cls, *args, **kwargs):
if B._instance == None:
B._instance = super().__new__(cls)
return B._instance a = B()
print(id(a))
b = B()
print(id(b))

结果:

2706206100280
2706206100280

Python入门基础(9)__面向对象编程_3的更多相关文章

  1. Python入门基础(9)__面向对象编程_2

    __str__方法 如果在开发中,希望使用print输出对象变量时,能够打印自定义的内容,就可以利用__str__这个内置方法了 注意:__str__方法必须返回一个字符串 class Cat(): ...

  2. Python入门基础(9)__面向对象编程_1

    定义一个只包含方法的类 class 类名: def 方法1(self,参数列表): pass def 方法2(self,参数列表): pass 当一个类定义之后,要使用这个类来创键对象.语法如下: 对 ...

  3. python 入门基础22 --复习 面向对象

    面向过程编程思想: 核心:过程 过程指的是解决问题的具体步骤,即先干什么再干什么. 基于该编程思想编写程序,相当于一条流水线,一种机械式的思维方式. 面向对象编程思想: 核心:对象 对象指的是数据与方 ...

  4. Python学习-第三天-面向对象编程基础

    Python学习-第三天-面向对象编程基础 类和对象 简单的说,类是对象的蓝图和模板,而对象是类的实例.这个解释虽然有点像用概念在解释概念,但是从这句话我们至少可以看出,类是抽象的概念,而对象是具体的 ...

  5. Python入门基础学习 二

    Python入门基础学习 二 猜数字小游戏进阶版 修改建议: 猜错的时候程序可以给出提示,告诉用户猜测的数字偏大还是偏小: 没运行一次程序只能猜测一次,应该提供多次机会给用户猜测: 每次运行程序,答案 ...

  6. [.net 面向对象编程基础] (2) 关于面向对象编程

    [.net 面向对象编程基础]  (2)  关于面向对象编程 首先是,面向对象编程英文 Object-Oriented Programming 简称 OOP 通俗来说,就是 针对对象编程的意思 那么问 ...

  7. 简学Python第三章__函数式编程、递归、内置函数

    #cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...

  8. 简学Python第六章__class面向对象编程与异常处理

    Python第六章__class面向对象编程与异常处理 欢迎加入Linux_Python学习群  群号:478616847 目录: 面向对象的程序设计 类和对象 封装 继承与派生 多态与多态性 特性p ...

  9. Python 入门基础6 --字符编码、文件操作1

    今日内容: 1.字符编码 2.字符与字节 3.文件操作 一.字符编码 了解: cpu:将数据渲染给用户 内存:临时存放数据,断电消失 硬盘:永久存放数据,断电后不消失 1.1 什么是编码? 人类能够识 ...

随机推荐

  1. 逆向工程mybatis-geneator.xml

    <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration ...

  2. 怎么看待php 面向对象思想

    面向对象的程序设计思路是现代程序设计由面向过程演变面向对象的必然趋势,所以面向对象的而设计思路必然有它不同的时代意义,必然有着不同面向过程的不同历史使命,而php 5以后成功添加面向对象的设计思路其实 ...

  3. 分享五个404页面模板 超好看的404页面你的网站离不了 seo优化404

    一个完整的网站离不开一个好的404页面,404页面不光是让你的网站美观,它对SEO的作用也很大,你想一下如果用户打开你的网站,输入一个不存在的风址,如果没有404直接就报错了,有了404就能打开一个美 ...

  4. Spring cloud stream【消息分区】

      在上篇文章中我们给大家介绍了Stream的消息分组,可以实现消息的重复消费的问题,但在某些场景下分组还不能满足我们的需求,比如,同时有多条同一个用户的数据,发送过来,我们需要根据用户统计,但是消息 ...

  5. 机器学习经典算法之KNN

    一.前言 KNN 的英文叫 K-Nearest Neighbor,应该算是数据挖掘算法中最简单的一种. 先用一个例子体会下. /*请尊重作者劳动成果,转载请标明原文链接:*/ /* https://w ...

  6. Python自学day-7

    一.静态方法(@staticmethod) class Dog(object): def __init__(self): pass @staticmethod def talk(): #静态方法 pa ...

  7. Hive 学习之路(五)—— Hive 分区表和分桶表

    一.分区表 1.1 概念 Hive中的表对应为HDFS上的指定目录,在查询数据时候,默认会对全表进行扫描,这样时间和性能的消耗都非常大. 分区为HDFS上表目录的子目录,数据按照分区存储在子目录中.如 ...

  8. Salesforce LWC学习(二) helloWorld程序在VSCode中的实现

    上一篇我们简单的描述了一下Salesforce DX的配置以及CLI的简单功能使用,此篇主要简单描述一下LWC如何实现helloWorld以及LWC开发时应该注意的一些规范. 做国内项目的同学直观的感 ...

  9. CSS3常用选择器

    一.基本选择器 子元素选择器 概念:子元素选择器只能选择某元素的子元素语法格式:父元素 > 子元素 (Father > Children)兼容性:IE8+.FireFox.Chrome.S ...

  10. 从无到有构建vue实战项目(三)

    四.响应式布局的实现 elemnt-ui参考bootatrap提供了响应式布局,附上地址:https://element.eleme.cn/#/zh-CN/component/layout 以下是我的 ...