python属于面向对象的还是面向过程的呀,Python面向过程还是对象
一个目录,和对象1.1类的定义1.2类名的规范1.3对象的组成1.4类属性和实例属性1.5类方法和实例方法1.5.1类方法(以后的)1.5.2.1中实例方法的定义:1.5.2.2中实例方法的访问:1.5 . 2.2对自身的理解:1.5.2.4初始化方法:_ init_ _ II。继承2.1。类方法、静态方法、私有属性2.1.1类方法2.1.2静态方法(只知道,不用)2.1.3私有属性(只知道)2.2类继承关系2.2.1两种定义类的方式的区别2.2.2什么是继承,有什么用?2.3重写父类方法2.4调用重复的父类方法2.5属性的动态设置(反射机制)三。锻炼
一.类别和对象
学习两个非常重要的物体概念:类和实例对象什么是类?什么是实例对象?
1.1类的定义关键字:class
语法:类名:类名(对象):两种定义类的方式没有区别,只是写法不同。
1.2类名的标准大写字母开始(大驼峰命名法,如果它由多个单词组成,则每个单词的第一个字母大写)
示例:MyClass测试用例猫
1.3物体的构成
1.4这类事物的特征(属性)和行为(方法)可以用类属性和实例属性来描述。
类属性:每个实例对象都有相同的值。类中定义的变量实例属性:实例对象和属性名赋予的属性称为实例属性,是实例对象独有的,不能被其他对象获取。
将实例属性语法添加到object: instance对象。属性名=属性值
例如:dog1.name=王采
类属性和实例属性的访问:
可以通过实例对象获得(访问)类。
也可以通过类直接获取(访问)属性。
只能通过实例对象访问实例属性。
1.5类方法和实例方法方法:是类中定义的函数。
1.5.1类方法(后面会介绍)1.5.2实例方法1.5.2.1实例方法的定义:实例方法直接在类中定义。实例方法的第一个参数是self(必须写)。案例:狗的方法定义。
访问1.5.2.2实例方法:只有这个类的实例对象可以被访问。访问实例方法时,对象本身会自动作为参数发送给self接收。
1.5.2.3对自我的理解:所谓自我可以理解为自我,也就是我们的实例本身,代表实例对象,谁调用它就指向谁。
这个实例对象调用dog1时,代表dog1dog2调用self,代表dog2调用self。
当一个对象调用它的方法时,python计时器会将该对象作为第一个参数传递给self,只传递以下参数。
1.5.2.4初始化方法:_ _ init_ _问题:当一个实例对象有多个属性时,有没有更方便的方法来设置它们?
初始化方法:_ _ init _ _
问题:_ _ init _ _什么时候调用?
Python的魔法方法百科全书:https://www.cnblogs.com/nmb-musen/p/10861536.html
二。继承2.1。类方法、静态方法、私有属性2.1.1类方法定义:使用decorator @classmethod,第一个参数必须是当前类对象,参数名一般约定为“cls”,通过它可以传递类的属性和方法(不能传递实例的属性和方法)
调用:实例对象和类独占都可以被调用。
应用场景:当某个行为需要从类的角度来执行时,应该定义为类方法。
2.1.2静态方法的定义(只知道不使用):使用decorator @staticmethod。参数是可选的,没有“self”和“cls”参数,但是方法体中不能使用类或实例的属性和方法;
调用:实例对象和类对象都可以被调用。
应用场景:存储逻辑代码,内部不需要引用类属性和实例属性。
2.1.3私有属性(只需知道它)单下划线以:_attr开头
双下划线以__attr开头
声明为私有属性:如果声明为私有属性,则意味着该属性是私有的,只能在类内部使用。不要在类外调用(其实类外是可以访问的,所以讨论这个没有意义)。
2.2类继承关系
2.2.1两种定义类方式的区别注意:python3和2以上定义的方法没有区别,都是继承父类对象。
Object:在python3的继承中,它是所有类的父类,所有类默认从基类object继承。
2.2.2什么是继承,继承有什么用?面向对象编程中有一个重要的思想叫做继承。子类可以通过继承获得其父类的属性和方法,被继承的类称为父类(基类),被继承的类称为子类作用:。通过继承,它们可以获得其父类的属性和方法,从而提高开发效率和代码重用率。
问题需求:
需求V1:实现一个手机类的初始版本(手机,只能打电话)
V2:实现一个定义好的老人机类(可以播放音乐,发短信)。
V3:实现智能手机类(视频通话、移动支付)
初级实现,如下图所示:
继承实现,如下图所示:
2.3覆盖父类方法覆盖,即在子类中,有一个与父类同名的方法,子类中的方法会覆盖父类中同名的方法。
覆盖父类方法:在子类中定义一个与父类同名的方法。
当子类的对象调用与父类同名的方法时,它首先调用自己的方法和属性。如果你需要得到父类的属性,类名。属性名称
2.4同名父类的子类重写父类的方法后,如何在子类中调用父类的方法?
在子类中:调用与父类同名的方法方式一:。方法名(self)方式二:super()。方法名()不需要在方法名中添加self。
2.5属性的动态设置(反射机制)setattr:设置属性
Getattr:获取属性
Delattr:删除属性
魔术方法:在python中,以双下划线开始,以双下划线结束的方法称为魔术方法。
魔法方法是在特定情况下自动触发的,所以不需要手动调用内置函数:setattr():设置属性;Getattr():获取属性;Delattr():删除属性
-对应的内置函数都有对应的魔术方法,不要轻易重写魔术方法。
三。练习1。定义一个测试用例类。__init__方法中有四个实例属性需要初始化:url地址请求参数预期结果实际结果
通过类创建一个实例对象。
通过反射机制,添加、删除和获取对象的属性。
2.定义上面写的手机(v1-v3)类,然后在此基础上定义一个安卓手机类(V41)和一个苹果手机类(V42),都是从v3手机类继承而来的。
V41:新方法:拍照,谷歌应用商店
V42:新功能:苹果应用商店语言助手sir
3.实现游戏的word版:坦克大战
步骤1:定义储罐等级(必需):
实现一个BaseTank类(所有Tank的父类)
BaseTank具有live属性(该属性表示坦克是否活着:1表示活着,0表示死了)
BaseTank具有position属性(该属性表示坦克的位置,随机生成,共有(1,10)10个位置)。
贝塞坦克有HP属性(代表血量,默认为10)
BeseTank具有attck _ postion属性(表示攻击位置,随机生成,共有(1,10)10个位置)
实现一个玩家坦克类MyTank,它继承自BaseTank。这个类有两个方法。
方法:(移动坦克位置)调用此方法时,提示玩家输入移动目标位置。输入后,储罐移动到输入的位置。(输入无效数据,提示用户重新输入,通过异常处理无效数据。)
Bullet_launch方法:发射一颗子弹,提示玩家输入攻击的目标位置,(输入无效数据,提示用户重新输入,通过异常处理无效数据)
实现一个计算机tank类,PCTank,它继承自BaseTank。这个类有两个方法。
移动方法:(移动坦克位置)调用该方法时,随机移动位置(1,10)。
子弹_发射方式:发射子弹,随机生成攻击目标位置(1,10)
第二步:游戏规则逻辑完善。
游戏开始后,创建玩家坦克和电脑坦克。
.游戏会话(循环,直到坦克死亡,它不会退出循环)
a,玩家坦克移动,电脑坦克移动,玩家坦克发射子弹,然后电脑坦克发射子弹,
b、玩家判断自己是否被电脑击中,电脑判断自己是否被玩家击中。
C.判断双方坦克是否存活,如果坦克死亡,宣布存活的一方获胜。如果大家都活下来了,继续玩。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。