python笔记小白入门_Python 笔记:全网最详细最小白的Class类和实例详解

面向对象最重要的概念就是类(class)和实例(instance),类是抽象,而实例(Instance)则是一个个具体的对象

面向对象三大特点:封装、继承和多态

class Animal(object):

def __init__(self, name):

self.name = name # 初始化类变量

def Dog(self): # 创建类中的方法

print(self.name)

复制代码

一、基本概念

1.1 概念

类(Class):

用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。

类变量:

类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。

数据成员:

类变量或者实例变量, 用于处理类及其实例对象的相关的数据。

方法重写:

如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

局部变量:

定义在方法中的变量,只作用于当前实例的类。

实例变量:

在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。

继承:

即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。

实例化:

创建一个类的实例,类的具体对象。

方法:

类中定义的函数。

对象:

通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

1.2 代码实例

# -*- coding: utf-8 -*-

"""

1、全局变量:在模块内、在所有函数外面、在class外面,这就是全局变量。

2、局部变量:在函数内、在class的方法内(未加self修饰的) ,这就是局部变量

3、静态变量:在class内的,但不在class的方法内的,这就是静态变量

4、实例变量:在class的方法内的,用self修饰的变量,这就是实例变量

"""

Global_Variable = "我是全局变量"

class ExampleClass(object):

Class_static_variable = "我是类静态变量" # 静态变量

def __init__(self, Instance_Variable): # 构造函数,sel代表对象,有Instance_Variable属性

self.Instance_Variable = Instance_Variable # 实例变量

def study_example(self):

Local_variable = "我是一个局部变量" # 局部变量

print(Local_variable) # 输出局部变量

print(self.Instance_Variable) # 输出实例变量

class ChlidExample(ExampleClass):

def __init__(self, Instance_Variable, Chlid_Variable):

ExampleClass.__init__(self, Instance_Variable) # 初始化父类实例变量

self.Chlid_Variable = Chlid_Variable

def test(self):

print("学习 python的面向对象,了解变量是必须的,我是孩子变量 {},我是继承变量:{}".format(self.Chlid_Variable, self.Instance_Variable))

Instance_Variable = "我是用来测试实例变量的"

Chlid_Variable = "我是用来测试局部变量的 "

study = ChlidExample(Instance_Variable, Chlid_Variable) # 调用子类对象

study.study_example() # 子类调用父类方法

study_child = ChlidExample(Instance_Variable, Chlid_Variable) # 调用子类对象

study_child.test() # 子类调用子类方法

复制代码

二、面向对象三大特性解析

2.1 封装

封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。

所以,在使用面向对象的封装特性时,需要:

将内容封装到某处

从某处调用被封装的内容

class Animal(object):

def __init__(self, name): # 初始化方法

self.name = name # 初始化类变量

def Dog(self): # 创建类中的方法

print(self.name)

def Cat(self): # 创建类中的方法

print(self.name)

info = Animal('dahuang') # 封装到对象 info

print(info.name) # 直接调用

info.Dog() # self 间接调用

复制代码

2.2 继承

继承,面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容。

对于面向对象的继承来说,其实就是将多个类共有的方法提取到父类中,子类仅需继承父类而不必一一实现每个方法。

class Animal(object):

def __init__(self, name): # 初始化方法

self.name = name # 初始化类变量

def eat(self): # 创建类中的方法

print("%s吃 "%self.name)

def drink(self): # 创建类中的方法

print("%s喝"%self.name)

class Dog(Animal): # 继承Animal的 Dog

def __init__(self, name):

self.name = name #

def cry(self):

print("汪汪叫")

class Cat(Animal): # 继承Animal的 Cat

def __init__(self, name):

self.name = name #

def cry(self):

print("喵喵叫")

child = Dog('邻居家的猫') # 封装到子类对象 info

child.drink() # 子类调用父类的方法

复制代码

2.3 多态

多态,字面理解为多种形态,没错,就是一个方法能表现出不同的形态。

同一操作(方法)作用于不同的对象,可以有不同的解释,产生不同的结果,而无须明确知道这个子类实际上是什么。将其上升到父类与子类的层面时,就是父类的引用指向了子类的对象。

前面所讲的封装和继承都是为多态服务的

然而, Python属于鸭子类型,大意是:当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。

python中的鸭子类型允许我们使用任何提供所需方法的对象,而不需要迫使它成为一个子类。

多态三大前提:

要有继承;

重写;

父类引用指向子类对象。

class Animal(object):

def __init__(self, name): # 初始化方法

self.name = name # 初始化类变量

class Dog(Animal): # 继承Animal的 Dog

def __init__(self, name):

self.name = name #

def cry(self):

print("%s汪汪叫" % self.name)

class Cat(Animal): # 继承Animal的 Cat

def __init__(self, name):

self.name = name

def cry(self):

print("%s喵喵叫" % self.name)

def DuoTai(child):

print(child.cry())

child1 = Dog('邻居家的狗') # 封装到子类对象 info

DuoTai(child1) # 多态展示Cry方法,重写

child2 = Cat('邻居家的猫') # 封装到子类对象 info

DuoTai(child2) # 多态展示Cry方法, 重写

复制代码

三、进阶

3.1 基础重载方法

0ad6bcf7546f5e2539372b384994289a.png

3.2 下划线说明

foo:

定义的是特殊方法,一般是系统定义名字 ,类似 init() 之类的。

_foo:

以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *

_ _ foo:

双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563635.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 字符串转dom对象_xml类型的字符串转换为Dom对象

我写这篇博客的目的是因为我在这一点转换方面耽搁了快2天时间,真是惭愧呀,dom4j.jar包有自带方法DocumentHelper.parseText(String text)用于将字符串类型的xml转换为Dom对象,从而进行下面的解析,还有一个关键是:产生字…

java nlpir_中科院NLPIR中文分词java版

摘要:为解决中文搜索的问题,最开始使用 版 SCWS ,但是处理人名和地名时,会出现截断人名地名出现错误。开始使用 NLPIR 分词,在分词准确性上效果要比 SCWS 好。本文介绍如何在 系统下 JAVA ,生成可以执行的 …

java怎编写么解析一个类型_DAY3:你必须知道的java虚拟机之类篇——类文件的结构...

马上过年啦,不知道大家今年有没有投资基金股票呢?是赚的盆满钵满还是拍断大腿,可以评论区一起交流交流,秀一秀哈哈,反正我是没来得及上车。暴富西不可能暴富的啦,打工人嘛几能写写文章啦~记得点…

java自学笔记_JAVA自学笔记(4)

发现JAVA的有趣Day1 继承不是"继承"1.0 继承的格式public classFU {public voidmethod(){System.out.println("Good night!");}}public class ZI extendsFU {}public classPractice {public static voidmain(String[] args) {ZI zinewZI();zi.method();}}打…

java分隔符算法_《Java数据结构和算法》栈 分隔符分配

分隔符包括“{“、"["、”(”、“] “、“)“、“}”,每个左分隔符需要右分隔符匹配。同时,在字符串中后出现左分隔符应该比早出现的先匹配。程序从字符串中不断读取字符,每次读取一个字符。若发现是左分隔符…

Java集合迭代器原理图解_Java Iterator接口遍历单列集合迭代器原理详解

这篇文章主要介绍了Java Iterator接口遍历单列集合迭代器原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下Iterator接口概述在程序开发中,经常需要遍历集合中的所有元素。针对这种需求&#x…

php商城的购物车功能,php实现购物车功能(以大苹果购物网为例)

首先是几个简单的登录页面登录用户名:密 码:登录页面写好之后,需要进入处理页面,从数据库中调出用户名和密码:session_start(); //开启session 必须要写到第一行header("Content-type:text/html;charsetutf-8&quo…

php的功能和特点,php的特点有哪些

PHP是一种服务器端、跨平台、html嵌入式的脚本语言执行速度快:PHP是一种强大的CGI脚本语言,语法混合了C、Java、Perl和PHP式的新语法,执行网页比CGI、Perl和ASP更快,这是它的第一个突出的特点。 (推荐学习:PHP视频教程…

php小程序码生成并保存,小程序中如何生成小程序码

导语:小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用&…

php写不了php,php写入内存不足怎么办

php写入内存不足的解决办法:1、修改【php.ini】;2、在程序里面添加相关语句,代码为【ini_set(memory_limit, 12M)】;3、在根目录建立【.htaccess】文件。本教程操作环境:windows7系统、PHP5.6版,DELL G3电脑…

java 终态类,javaoo,继承,抽象类,终态类,访问修饰符!

java的继承!Java的继承使用extends关键字!为什么要使用继承呢?我们先来举例说明一下!比如说!烟是类!而叶子烟,和纸烟,烟这个类包含了,叶子烟和纸烟这两个类,如…

php cdr,win10彻底禁止cdr联网

1、打开Win10电脑,然后按winPauseBreak,来到“系统”属性窗口,点击控制面板,如图所示:2、打开来到控制面板页面,鼠标单击“系统和安全”,如图:3、打开在“系统和安全”对话框中&…

微信 语音转文字 java,在微信——怎么将语音转化为文字,你需要学习了

有时候和好友在聊天,这时好友在微信上发来语音信息,可是你这个时候不方便听语音,那怎么办呢?这个是我们就可以运用微信的语音转文字的功能,那么如何使用这个功能呢?跟着小编看看吧!操作方法01小…

php开发添加表情功能,WordPress网站评论区如何实现添加表情包功能?

做网站过程中,可以给自己的网站添加评论框,供用户评论。默认情况下,Wordpress网站评论框是没有添加表情功能的,那么WordPress网站评论区如何实现添加表情包功能?今天我们介绍一下如何给自己的Wordpress网站评论框添加表…

日冕物质抛射检测matlab,日冕图像论文,关于基于实时数据的日冕物质抛射自动检测方法相关参考文献资料-免费论文范文...

导读:本论文主要论述了日冕图像论文范文相关的参考文献,对您的论文写作有参考作用。(昆明理工大学信息与自动化学院,昆明 650504)(Faculty of Information Engineering and Automation,Kunming University of Science and Technology,Kunming 650504,China)摘 要:本…

link url下载php,php脚本生成google play url的下载链接,下载apk并自动反编译后获取android版本号...

php脚本生成google play url的下载链接,下载apk并自动反编译后获取android版本号需求:get the offer tracking linkfollow the redirect to get google play urlGo to http://apps.evozi.com/apk-downloader/Enter google play urlDownload APK fileDecompile APK f…

oracle单行子查询返回多个行 order by,单行子查询返回多个行 Issue分析求助

with order_base as --获取订单基础情况(select ou.order_key order_key, ou.order_quantity_i, ood.dispatch_time_t, ou.part_number_s, I032ZZ01 pline_name_sfrom order_uv ou left join at_as_om_orderdispatchstatus ood on ou.order_key ood.order_54union allselect m…

php按照名称搜索,PHP从类型和名称搜索

很抱歉,标题不好,但我不知道有更好的选择.目前,我正在创建一个搜索引擎以获取产品详细信息.我有2种搜索类型,第一种是使用产品类型进行搜索,另一种是使用产品名称进行搜索.这是搜索代码:$search_exploded explode (" ", $search);$x "";$cons…

简述oracle数据库特殊状态,【OracleDB】 01 概述和基本操作

实例概念:Oracle有一个特殊的概念Oracle数据库 数据库 Oracle文件系统 Oracle实例实例处理Oracle的请求,调用文件系统然后返回结果响应给客户端单实例和多实例一个数据库可以对应多个实例操作数据库服务这是Oracle数据库的服务,一定要安装…

oracle中affirm,2.Oracle Data Guard 参数介绍

Oracle Data Guard 参数介绍Data Guard作为Oracle提供的一个高可用及灾备解决方案,理解并可以实施它对于DBA来说是非常重要套的技能上节介绍了有关Data Guard的概念,这节将介绍相关的一些参数有的参数是做为备库角色时才生效的,会单独说出来1. DB_NAME该…