python教程

python面向对象

Tips:编程是工科,百问不如一试,百看不如一练。

  • 面向对象概念初步建立

    思考: 网站有一个用户,定义一个变量保存,网站有一堆用户,定义一堆变量保存有点不科学,于是诞生了列表,用一个列表保存一堆用户名。做算术运算,多次定义变量print太累赘,于是有了函数,在函数内部实现功能然后调用函数即可。由此可见,一个事物的诞生总是为了解决一些问题,面向对象也...

    人气指数:42219-07-17
  • 类、对象(实例)、实例化、构造方法及实例方法和变量

    公元50000年,动物发生变异开始破坏地球,人和变异生物开始斗争,一场地球保卫战展开。 这里面有人类和动物类,人类有一些共有特征(年龄、姓名)和行为(吃喝拉撒拳打脚踢等)。首先我们先定义1个人类,可以生产人,生产人时赋予每个人共同特征和行为,同时可以对特征和行为去赋值。 # -*- coding:utf...

    人气指数:41020-07-29
  • self是什么?__init__要return吗?实例化对象的内存过程

    上一节有1个遗留问题self,为了彻底认识self,我们首先得理解定义1个类并创建1个对象时在内存里发生了什么。 # -*- coding:utf-8 -*-class Person: def __init__(self,my_name,skill): print(f创建对象{my_name}...) self.name = my_name # 实例变量 self.ability = skill # 实例变量 # 实例方法 def sleep(self,time_num): print(f{self.name}休息{time_num}分钟...

    人气指数:27720-04-04
  • 类属性、类方法、实例属性、实例方法的区别

    深入一点学习类和面向对象,必须有1个意识: 类有类的内存空间,每个对象有自己的内存空间,只有具备这个常识才能理解面向对象一些行为 。 # -*- coding:utf-8 -*-class Person: def __init__(self,my_name,my_age): self.name = my_name # 实例变量 self.age = my_age # 实例变量 def sleep(self): print(打怪累了,睡一会)if __name__ ==__main__...

    人气指数:26520-10-05
  • 类和对象属性的增删改查及__dict__

    列表可以增删改查,字典可以增删改查,一个事物具备增删改查的能力才方便大家使用。本节课就展示下类和对象属性的增删改查,同时认识一种特殊的属性__dict__。 对象属性增删改查 # -*- coding:utf-8 -*-class Person: def __init__(self,my_name): self.name = my_name # 实例变量 def change(self): del self.age self.skill = 无影脚if _...

    人气指数:31120-08-02
  • 对象之间的交互组合实战

    面向对象开篇就说要用1个战斗来学习面向对象,但是这几节课一直都是在学习概念,最多也就定义了个人类,这战争怎么打?这节课就定义人类和变异的狼类开战。 要实现较为复杂战斗就得学会1个概念:类的组合。 1个类某个属性的值是另外1个类的对象,这种情况就是类的组合,有了这种组合关系,对...

    人气指数:47920-05-14
  • 静态方法@staticmethod概念及使用场景

    1 静态方法使用装饰器@staticmethod。 2 静态方法是定义在类中的函数,但是没有self、cls这样的特殊参数,在静态方法中一般不涉对属性和方法的操作。 3 静态方法中的操作完全可以在类外用普通函数实现,但是为了便于维护有时候会把一些功能代码写在类中,让代码显得有逻辑性和归属性。 4 静态方法一般...

    人气指数:49921-01-17
  • 继承基础概念及子类重写父类方法

    前面的章节主要介绍类和对象的概念及使用,本节则介绍类和类之间1个重要的关系:继承。 继承一般用来创建和现有类功能相似的新类同时在此基础上增加一些新的属性和方法,通过继承可以实现代码的复用和扩展。 空说太抽象,用代码说话: # -*- coding:utf-8 -*-class Person: def __init__(self,name,blood): self.nam...

    人气指数:20420-04-06
  • 子类继承父类的易错面试题

    今日有1个小案例可以测试能不能真正的理解对象、子类、父类的关系。题目如下: # -*- coding:utf-8 -*-class Person: def __init__(self): self.skill() def skill(self): print(我是基本人类)class TianLong(Person): def skill(self): print(我是武侠人物)if __name__ == __main__: p = TianLong() 我是武侠人物 1)子类TianLong里面没有__int__方法,所以创建...

    人气指数:48320-08-01
  • 子类执行父类同名方法super(),新式类,object基类

    子类可以继承父类的方法,可以重写父类的方法,但更多的时候我们想在重写父类的方法时也执行父类的方法(也就是说扩展父类的已有方法)。这种情况如何实现呢?我们从用代码案例来做了解。 子类执行父类构造方法可以直接通过父类名.__init__的方式调用,也可以使用super()函数。 1)通过super()函数子类...

    人气指数:42120-04-05
  • 多继承广度|深度优先,C3算法,继承顺序__mro__

    一个类可能有多个父类,这个就涉及多继承。 每个父类可能还有自己的父类,这一群父类之间可能有同名方法,总而言之,可能会出现非常混乱的继承局面。所以多继承就涉及到继承顺序(即MRO顺序:method resolution order)问题。(PS:多继承容易让代码逻辑复杂、思路混乱,难以维护,一些语言如Java、C...

    人气指数:21420-08-01
  • isinstance与issubclass

    isinstace:用于判断一个对象是否为一个类或者这个类继承的父类的实例。 issubclass:判断两个类是否是同个类,或者有继承关系。只能判断类不能判断实例 # -*- coding:utf-8 -*-class Person(): passclass TianLong(Person): passif __name__ == __main__: p = Person() qiaoFeng = TianLong() print(isinstance(p,Person)) print(isinstance(qiaoFeng,TianLong)) p...

    人气指数:33320-04-05