python类

python类的学习:前言

爱⌒轻易说出口 提交于 2020-03-08 17:58:15
前言 在面向对象程序设计中,把数据以及对数据的操作封装在一起,组成一个整体(对象),不同对象之间通过消息机制来通信或者同步。对于相同类型的对象进行分类、抽象后,得出共同的特征而形成了类。 创建类时用变量形式表示对象特征的成员称为数据成员,用函数形式表示对象行为的成员称为成员方法,数据成员与成员方法统称为类的成员。 以设计好的类为基类,可以继承得到派生类,缩短开发周期,实现代码的复用。 派生类中还可以对基类继承而来的某些行为进行重新实现,从而是得基类的某个同名方法在不同派生类中的行为不同,体现出一定的多态特性。 封装、继承、多态是面向对象程序设计的三个要素。 本章学习目标: 掌握类的定义语法 掌握对象的创建语法 理解数据成员与成员方法的区别 理解私有成员与公有成员的区别 理解属性的工作原理 了解继承的基本概念 了解特殊方法的概念与工作原理 来源: CSDN 作者: weixin_45700973 链接: https://blog.csdn.net/weixin_45700973/article/details/104729350

Python-类的私有成员

折月煮酒 提交于 2020-03-05 13:45:59
1.鸭子类型:编程思想 一只鸟,长得像鸭子就是鸭子,叫声像鸭子就是鸭子,走起来像鸭子就是鸭子 归一化,统一接口 2.类的约束:控制子类定义一些方法 方法一:推荐使用 raise:主动抛出异常 方法二: from abc iport ABCMeta,abstractmethod 抽象类,接口类:指定一些规则 3.super 按照mro的查找顺序进行查找 super(类名,self)从当前mro中查找类名的下一个类 super时按照mro的顺序进行继承 4.类的私有成员 以__开头的变量就是私有的 _desires = "有欲望" (程序员之间预定俗称)类私有的属性 私有属性和方法在当前类中可以查看及使用 子类不能继承父类的私有方法和属性 私有的目的就是保护数据的安全性 强制查看私有方法或属性:(但是非常不推荐使用) _类名私有变量名 _类名私有方法名 class Human: live = '有理想' # 类共有的属性 __desires = '有欲望' # (程序级别)类私有的属性 _desires = '有欲望' # (程序员之间约定俗称)类私有的属性 def __init__(self,name,age,sex,hobby): self.name = name self.age = age self.sex = sex # 对象的共有的属性 self.__hobby =

python类的使用(类定义,构造器,类属性,方法)

走远了吗. 提交于 2020-03-05 09:32:23
注:这里只描述使用方法,具体类的概念长篇大论就不要为难我这个懒人了。 总之一句话编程语言只是一个工具,会用就行,好用就行。打破砂锅问到底,我觉得有必要研究一下C,汇编,电子链路等。 1 class cltdy: #定义类,并起一个名字 2 n = 1000 #类属性,类内的变量 3 def __init__(self,name,age,profession='IT民工'): #构造函数,类接收外部传入参数全靠构造函数 4 self.name = name 5 self.age = age 6 self.profession = profession 7 def printing_name(self): #类的方法 8 print('我的名字是:%s'%self.name) 9 def printing_age(self): 10 print("我的年龄:%s"%self.age) 11 def printing_pfsn(self): 12 print("我的职业:%s"%self.profession) 13 14 test = cltdy('sober',25,'DevOps') #类的实例化,将参数传入类中,传入参数可以多但不可以少于类构造函数的参数(self参数除外,self是将实例化的变量名传入类) 15 print("这是类实例化后的内存地址:%s"%test) 16

Python类的创建过程

为君一笑 提交于 2020-03-02 20:53:52
类的创建过程 以下说的类指的类本身,例如以下代码: class Foo: def __init__(self): pass 则指的 Foo 的创建过程,而不是 Foo 的实例。 1. 解析 MRO 记录(Resolving MRO entries) 根据 MRO 规则解析继承关系 2. 确定元类(Determining the appropriate metaclass) 查找元类的过程遵循以下规则: 如果没有基类且没有指定 metaclass ,则使用 type() 如果指定了 metaclass 且它不是 type() 的实例,则直接使用 metaclass 如果指定了 type() 实例的 metaclass 或者有基类,(the most derived metaclass is used. ??) 3. 准备命名空间(Preparing the class namespace) 当元类确定后,类的命名空间也可以确定了。 如果元类有 __prepare__ 属性,则 namespace = metaclass.__prepare__(name, bases, **kwargs) ,否则命名空间会初始化为有序的空map(empty ordered mapping.) 4. 执行 Class 内语句(Executing the class body) 类内的语句通过 exec

Python类的创建过程

时光总嘲笑我的痴心妄想 提交于 2020-03-02 20:53:32
类的创建过程 以下说的类指的类本身,例如以下代码: class Foo: def __init__(self): pass 则指的 Foo 的创建过程,而不是 Foo 的实例。 1. 解析 MRO 记录(Resolving MRO entries) 根据 MRO 规则解析继承关系 2. 确定元类(Determining the appropriate metaclass) 查找元类的过程遵循以下规则: 如果没有基类且没有指定 metaclass ,则使用 type() 如果指定了 metaclass 且它不是 type() 的实例,则直接使用 metaclass 如果指定了 type() 实例的 metaclass 或者有基类,(the most derived metaclass is used. ??) 3. 准备命名空间(Preparing the class namespace) 当元类确定后,类的命名空间也可以确定了。 如果元类有 __prepare__ 属性,则 namespace = metaclass.__prepare__(name, bases, **kwargs) ,否则命名空间会初始化为有序的空map(empty ordered mapping.) 4. 执行 Class 内语句(Executing the class body) 类内的语句通过 exec

python 类方法、静态方法

不想你离开。 提交于 2020-03-02 12:23:56
python 类方法、静态方法 class Foo ( object ) : def __init__ ( self , name ) : self . name = name def ord_func ( self ) : """定义一个实例方法,至少有一个self参数""" print ( "实例方法" ) @ classmethod def class_fun ( cls ) : """定义类方法,至少有一个cls参数""" print ( "类方法" ) @ staticmethod def static_fun ( ) : """定义静态方法, 无默认参数""" print ( "静态方法" ) f = Foo ( "中国" ) # 调用实例方法 f . ord_func ( ) # 调用类方法 Foo . class_fun ( ) # 调用静态方法 Foo . static_fun ( ) 来源: CSDN 作者: 廷益--飞鸟 链接: https://blog.csdn.net/weixin_45875105/article/details/104607398

python学习——类

假装没事ソ 提交于 2020-03-01 19:51:03
""" 类定义: 关键字:class 语法: class 类名: # 类里面的代码 类名的命名规范:遵循标识符的命名规范,风格采用大驼峰命名法(每个单词的第一个字母大写) 通过类创建对象: 对象 = 类名() """ class Cat: pass class MyTestClass: pass # 关于对象:有人叫对象,也有人叫实例 # 通过类创建对象(实例化对象) kitty = Cat() print(kitty, id(kitty)) coffee = Cat() print(coffee, id(coffee)) 类属性和实例属性 """ 这一类事物拥有的共同特征,我们通常会定义为类属性 类属性:在类里面直接定义的变量,叫做类属性 # 通过对象访问类属性:对象名.属性名 # 通过类访问类属性:类名.属性名 实例属性:每个对象的属性值都有可能不一样,就应该定义为实例属性(对象属性) 实例属性的定义:对象.属性名 = 属性值 """ print("------------------类属性--------------------") class Cat: leg = "四条腿" tail = "长尾巴" kitty = Cat() coffee = Cat() # 通过对象访问类属性:对象名.属性名 print(kitty.leg) print(coffee.leg) #

Python 【类的多态】

徘徊边缘 提交于 2020-03-01 13:45:48
一.多态 #类的多态 class Animal(object): #Animal类继承object def __init__(self,color): self.color = color def eat(self): print("动物在吃!") def run(self): print("动物在跑") class Cat(Animal): #Cat继承Aninal 继承[属性和方法] def eat(self): #方法重名 print("猫仔!") class Dog(Animal): #继承时候,方法重名用子方法 def __init__(self,name,age,color): super(Dog,self).__init__(color) #super表示父类,调用父类的初始化方法 self.name = name self.age = age def eat(self): #方法重名 print("狗仔!") #多态 def feed(obj): obj.eat() #对象作为参数传入 an = Animal("黄") cat = Cat("橘黄") dog = Dog("小黑",12,"黑色") feed(an) feed(cat) feed(dog) 上面有三种类,Animal类、Cat类、Dog类,三种类中都有共同的方法eat() 使用方法 def feed

python中类与__init__的理解

江枫思渺然 提交于 2020-03-01 12:36:48
原文链接: https://www.zhihu.com/question/46973549/answer/767530541 作为典型的 面向对象 的语言,Python中 类 的 定义 和 使用 是不可或缺的一部分知识。对于有面向对象的经验、对 类 和 实例 的概念已经足够清晰的人,学习Python的这套定义规则不过是语法的迁移。但对新手小白而言,要想相对快速地跨过 __init__ 这道坎,还是结合一个简单例子来说比较好。 以创建一个“学生” 类 为例,最简单的语句是 class Student (): pass 当然,这样定义的类没有包含任何预定义的数据和功能。除了名字叫Student以外,它没有体现出任何“学生”应该具有的特点。但它是可用的,上述代码运行过后,通过类似 stu_1 = Student () 这样的语句,我们可以创建一个“学生” 实例 ,即一个具体的“学生”对象。 通过 class 语句定义的类 Student ,就好像一个 “模具” ,它可以定义作为一个学生应该具有的各种特点(这里暂未具体定义); 而在类名 Student 后加圆括号 () ,组成一个 类似函数调用 的形式 Student() ,则执行了一个叫做 实例化 的过程,即根据定义好的规则,创建一个包含具体数据的学生对象(实例)。 为了使用创建的学生实例 stu_1 ,我们可以继续为它添加或修改属性

python学习笔记——类、对象、烤地瓜练习

雨燕双飞 提交于 2020-02-29 17:06:44
对象=属性(变量)+方法(函数) #静态的特征称为属性,动态的行为称为方法 对象:就是看得见摸得着的东西 类:指模版,用模版创造出来的东西叫对象 类(class)由3部分构成   1.类的名称:类名   2.类的属性:一组数据   3.类的方法:允许对进行操作的方法(行为) 1 class Cat: #类名的第一个字母要大写,既大驼峰法 2 #属性(就是变量) 3 4 #方法 5 def eat(self): #函数在类里面定义就叫方法 6 print("猫在吃鱼.....") 7 def drint(self): 8 print("猫在喝kele......") 9 #定义类就相当于创建模版,接下来要通过模版创建对象 10 11 tom = Cat() # Cat() 就是创建对象,要给创建的对象附上变量名tom 12 #创建对象--->即在内存中开辟一块区域--->返回对象的引用并附上变量名tom---->tom所指向的就是内存中开辟的那块区域的对象 13 14 #调用对象中的方法,类里有什么方法,对象里就有什么方法 15 tom.eat() 16 tom.drint() 17 18 #给类添加属性(给tom指向的对象) 19 #给tom对象添加属性,因为tom指向内存中开辟的那块区域,因此属性也添加到那块区域 20 tom.name = "汤姆" 21 tom.age =