Python 类(class)1

news/2024/7/4 1:44:59 标签: python, class, , 类的属性, 类的方法
class="baidu_pl">
class="article_content clearfix">
class="markdown_views prism-atom-one-dark">

class1_0">Python (class)1

前言

(class)是class="tags" href="/tags/PYTHON.html" title=python>python中很重要的一个概念,也是我们面象对象编程中最重要的概念主之一
如何去理解,就像如何去理解函数(方法)一样,首先要有一颗常态的心,不要因为新名词,新事物,而自乱阵脚.
然后,尽量用比的方法去学习一个新事物,会让你更容易理解.

这里简单的说明一下本人对的理解
从使用角度讲,是一个有特点的功能集成者.
即当我们说到一个的时候,

  1. 通常会去了解这个能做什么事情.比如,我们Pygame中的矩形(Rect)就是一个,它可以移动.
  2. 这个有什么特点(属性)

从程序设计角度讲,的组织是为了更好的重用代码,更好的组织代码,以及本质是一个数据型.

本节提要

内容详情

的声明:

class="prism language-class="tags" href="/tags/PYTHON.html" title=python>python">class="token keyword">class class="token class-name">MyClassclass="token punctuation">(class="token builtin">objectclass="token punctuation">)class="token punctuation">:
	class="token keyword">pass

class: 是一个关键字,就像定义函数时用的def一样,说明我们要定义的是一个
MyClass: 我们设计的名.就像我们所有的地球人,统称"人"一样,对一个型的统称
参数object:父

的构函数

class="prism language-class="tags" href="/tags/PYTHON.html" title=python>python">class="token keyword">class class="token class-name">MyClassclass="token punctuation">(class="token builtin">objectclass="token punctuation">)class="token punctuation">:
	class="token keyword">def class="token function">__init__class="token punctuation">(selfclass="token punctuation">, argsclass="token punctuation">)class="token punctuation">:
		class="token keyword">pass

init(self,args)
这个函数称为的构造函数
用来对进行一些初始化的操作

这个函数在进行实例化的时候自动调用
实例:

class="prism language-class="tags" href="/tags/PYTHON.html" title=python>python">class="token keyword">class class="token class-name">MyClassclass="token punctuation">(class="token builtin">objectclass="token punctuation">)class="token punctuation">:
    class="token keyword">def class="token function">__init__class="token punctuation">(selfclass="token punctuation">, textclass="token punctuation">)class="token punctuation">:
        class="token keyword">printclass="token punctuation">(textclass="token punctuation">)
mc class="token operator">= MyClassclass="token punctuation">(class="token string">"我是在初始化的时候打印的"class="token punctuation">)  class="token comment"># 的实例化

在这里插入图片描述
可以看到,当我们实例话的时候,会自动调用__init__()函数
名词:
中的函数,通常称为的方法
注意:
构造函数中,函数名是固定的,第一个参数self也是固定的.
如果没有self这个参数,构造函数会出错
看以下实例

class="prism language-class="tags" href="/tags/PYTHON.html" title=python>python">class="token keyword">class class="token class-name">MyClass2class="token punctuation">(class="token builtin">objectclass="token punctuation">)class="token punctuation">:
    class="token keyword">def class="token function">__init__class="token punctuation">(textclass="token punctuation">)class="token punctuation">:
        class="token keyword">printclass="token punctuation">(textclass="token punctuation">)

mc class="token operator">= MyClass2class="token punctuation">(class="token string">"我是在初始化的时候打印的"class="token punctuation">)

效果图
在这里插入图片描述
总结:
构造函数:

  1. 函数名:init()
  2. 第一个参数self固定的

的方法

的实例方法要点:

  1. 定义在内部的函数
  2. 第一个参数必须是self
  3. 使用时,实例名.方法名()
class="prism language-class="tags" href="/tags/PYTHON.html" title=python>python">class="token comment"># 的方法示例
class="token keyword">class class="token class-name">MyClass3class="token punctuation">(class="token builtin">objectclass="token punctuation">)class="token punctuation">:
    class="token comment"># 构造函数
    class="token keyword">def class="token function">__init__class="token punctuation">(selfclass="token punctuation">, textclass="token punctuation">)class="token punctuation">:
        class="token keyword">printclass="token punctuation">(class="token string">"我是构造方法" class="token operator">+ textclass="token punctuation">)
    class="token comment"># 的方法:move()
    class="token keyword">def class="token function">moveclass="token punctuation">(selfclass="token punctuation">)class="token punctuation">:
        class="token keyword">printclass="token punctuation">(class="token string">"我移动了"class="token punctuation">)

mc4 class="token operator">= MyClass3class="token punctuation">(class="token string">"mc4"class="token punctuation">)
mc4class="token punctuation">.moveclass="token punctuation">(class="token punctuation">)  class="token comment"># 调用的move()方法

的静态方法:
当我们希望一个,不实例化也能调用的某个方法时,这个方法应该被定义成静态方法

  • 方法定义前加下@staticmethod修饰
  • 方法的参数没有self
  • 调用时直接用名.方法名()来使用
class="prism language-class="tags" href="/tags/PYTHON.html" title=python>python">class="token keyword">class class="token class-name">MyClass5class="token punctuation">(class="token builtin">objectclass="token punctuation">)class="token punctuation">:
    class="token comment"># 构造函数
    class="token keyword">def class="token function">__init__class="token punctuation">(selfclass="token punctuation">, textclass="token punctuation">)class="token punctuation">:
        class="token keyword">printclass="token punctuation">(class="token string">"我是构造方法" class="token operator">+ textclass="token punctuation">)
    class="token comment"># 的静态方法,可以实例化直接调用
    @class="token builtin">staticmethod
    class="token keyword">def class="token function">ddclass="token punctuation">(class="token punctuation">)class="token punctuation">:
        class="token keyword">printclass="token punctuation">(class="token string">"所有实例共有方法"class="token punctuation">)
MyClass5class="token punctuation">.ddclass="token punctuation">(class="token punctuation">)  

的属性

第一种:实例属性
要点:

  1. 定义在构造函数/的方法内
  2. 的定义中用self.属性名来使用
  3. 实例化后用实全例名.属性名来访问或者修改
    第二种: 的属性
    要点:
  4. 定义在方法外
  5. 的定义中用名.属性名来使用
  6. 的属性被所有的实例所共有(改变一次属性,其他的实例的属性也会变)
  7. 可以直接使用名.属性名来使用
  8. 的属性被实例单独改变时,这个属性会与实例绑定,不再受.属性名改变而改变
class="prism language-class="tags" href="/tags/PYTHON.html" title=python>python">class="token comment"># 的属性示例
class="token keyword">class class="token class-name">MyClass6class="token punctuation">(class="token builtin">objectclass="token punctuation">)class="token punctuation">:
    weight class="token operator">= class="token number">100 class="token comment"># 属性
    class="token keyword">def class="token function">__init__class="token punctuation">(selfclass="token punctuation">, nameclass="token punctuation">, ageclass="token punctuation">)class="token punctuation">:
        selfclass="token punctuation">.name class="token operator">= name  class="token comment"># 实例属性name
        selfclass="token punctuation">.age class="token operator">= age  class="token comment"># 实例属性age
    
class="token keyword">printclass="token punctuation">(MyClass6class="token punctuation">.weightclass="token punctuation">)  class="token comment"># 打印属性
mc6_1 class="token operator">= MyClass6class="token punctuation">(class="token string">"mc6_1"class="token punctuation">, class="token number">12class="token punctuation">) class="token comment"># 实例化
class="token keyword">printclass="token punctuation">(mc6_1class="token punctuation">.nameclass="token punctuation">, mc6_1class="token punctuation">.ageclass="token punctuation">)  class="token comment"># 访问实例化属性
class="token comment"># 改变属性与实例化属性
MyClass6class="token punctuation">.weight class="token operator">= class="token number">200 class="token comment"># 我又重了
mc6_1class="token punctuation">.name class="token operator">= class="token string">"mc6_1改名了"
mc6_1class="token punctuation">.age class="token operator">= class="token number">11 class="token comment">#我变年轻了
class="token keyword">printclass="token punctuation">(MyClass6class="token punctuation">.weightclass="token punctuation">)
class="token keyword">printclass="token punctuation">(mc6_1class="token punctuation">.nameclass="token punctuation">, mc6_1class="token punctuation">.ageclass="token punctuation">)  class="token comment"># 访问实例化属性
mc6_2 class="token operator">= MyClass6class="token punctuation">(class="token string">"mc6_2"class="token punctuation">, class="token number">20class="token punctuation">)
class="token keyword">printclass="token punctuation">(mc6_2class="token punctuation">.weightclass="token punctuation">)
mc6_2class="token punctuation">.weight class="token operator">= class="token number">300 class="token comment"># 改变了实例的属性
class="token keyword">printclass="token punctuation">(mc6_1class="token punctuation">.weightclass="token punctuation">)
class="token keyword">printclass="token punctuation">(mc6_2class="token punctuation">.weightclass="token punctuation">)
MyClass6class="token punctuation">.weight class="token operator">=  class="token number">400  class="token comment"># 再改属性
class="token keyword">printclass="token punctuation">(mc6_1class="token punctuation">.weightclass="token punctuation">)
class="token keyword">printclass="token punctuation">(mc6_2class="token punctuation">.weightclass="token punctuation">) class="token comment"># 该实例的此属性不会再随着名.属性名 的操作方法改变而改变了

在这里插入图片描述

后记

的内容还有很多,这里简单的介绍了的基本内容:

  • 的定义方法
  • 的构造函数
  • 的方法
  • 的属性

这几天在折腾电脑,给自己的电脑装了个黑苹果系统.由于无线网卡驱动问题,导致黑苹果系统还无法正式投入使用.明天网卡就能到了,到时候用黑苹果感受一下写代码的感觉是不是比win好点.

今天更新的内容有点少,但是内容的深度比较大,需要慢慢来体会


http://www.niftyadmin.cn/n/1653929.html

相关文章

Python 类(class)2

Python 类(class)2 前言 考虑到有这几天更新的内容好像容量有点大.如果是跟着一路看过来的同学,可能会感觉到比较吃力,打算将内容讲解的更细致点,容量上更少点 前情提要 内容提要 property 装饰的只读属性 setter 装饰的写检验属性 内容详情 property 将一个类的方法用p…

Lua1.1 Lua 的参考手册 (三)

转载出处:http://my.oschina.net/xhan/blog/310019 (接上篇) -------------------------------------- 7 一些例子 -------------------------------------- 本段给出一些显示 Lua 特性的例子。它并不打算覆盖完整的语言,只是显示…

将Java项目与Flex4整合

简化版: javaflex开发环境在此不再介绍,SSH架构的java项目的搭建也不再多说(示例项目采用tomcat作为服务器,端口为9080)。 首先,解压blazeds.war,将得到的messageing-config.xml,proxy-config.xml,remoting…

python 类(class)3

python 类(class)3 前言 本来想做成一个系列,后来感觉,写太多重复的东西反而有可能会影响阅读体验. 努力将教程写的简单,易懂,有实用价值.启发对内容的思考. 初稿就先这样将就着先吧.改天等一套内容写的差不多了,再重新整理一下吧. 每次回头看自己写的东西,都有点惨不忍睹的感…

算法入门笔记------------Day4

1.WERTYU 输入一个错位后敲出的字符串,输出打字员本来想打出的字 #include<stdio.h> char *s"1234567890-QWERTYUIOP[]\ASDFGHJKL;ZXCVBNM,./"; int main(void) {int i,c;while((cgetchar())!EOF){for(i1;s[i]&&s[i]!c;i); //这里用分号,搜索到字符前…

Java基础语法1

Java基础语法&#xff08;1&#xff09;知识点目录 1:关键字 (1)定义 (2)特点 (3)注意事项 2:标识符 (1)定义 (2)组成规则 (3)注意事项 (4)常见的命名规则(见名知意) A:包 单级包 多级包 B:类或者接口 一个单词 多个单词 C:方法或者变量 一个单词 多个单词 D:常量 全部大写 一个…

注册DLL文件命令

注册DLL文件命令的使用方法详细说明Regsvr 32命令是Windows中控件文件(如扩展名为DLL、OCX、CPL的文件)的注册和反注册工具。 命令格式Regsvr32 [/s] [/n] [/i[:cmdline]] dllname/u 卸载安装的控件&#xff0c;卸载服务器注册&#xff1b;/s 注册成功后不显示操…

Python类(4)类的继承

Python类(4)类的继承 类的继承格式 class 子类(基类):pass基类(父类): 被继承者(先辈) 子类:继承者(后辈) 如果没有基类,就用object 比如,我们前面几节课的内容,都是直接继承自object这个基类的.理论上,所有的类都是object的子类 可以用__base__属性查看子类的父类 查看子类…