python 面向对象九 定制类】的更多相关文章

一.定制类,实质就是我们自己重写特殊函数 看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让class作用于len()函数. 除此之外,Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类. 二.__len__()方法 >>> class MyStr(str): def __init__(self, s): self.__s…
Python面向对象之接口类(抽象类):就是制定一个规范. 比如定义了一个接口类(抽象类)(他们是不可以进行实例化的,这就是他为什么是制定一个规范的原因). 他的定义是需要abc模块,要变的就是他的方法,比如下面的pay方法, 定义好一个抽象类(接口类)Payment,他用装饰器@abstractmethod将pay方法装饰 这样,其他类如果都继承了Payment方法,其他类中就都需要有一个pay方法,如果没有就会报错. 就好比,起初我没有微信支付类,但是如果后续项目需要加微信支付此功能,支付的…
Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 目录 Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 1. 元类type 2. 反射 3. 函数与类的区别 4. 特殊的双下方法 1. 元类type type:获取对象从属的类 Python中一切皆对象,类在某种意义上也是一个对象 Python中自己定义的类,以及大部分内置类,都是由type元类(构建类)实例化得来的 # type 获取对象从属于的类 print(type(A)) pr…
Python3 面向对象 一丶面向对象技术简介 类(Class): 用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 方法:类中定义的函数. 类变量:类变量在整个实例化的对象中是公用的.类变量定义在类中且在函数体之外.类变量通常不作为实例变量使用. 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据. 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写.…
一.面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想.在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一个功能.举个例子,你要做饭,可以用电磁炉,也可以用煤气灶.不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路,两种最重要的编程范式分别是面向过程编程和面向对象编程. 提到面向对象,就不得不提到另一种编程思想,面向过程:什么是面向过程呢,面向过程的思想是把一个项目.一件事情按照一定的顺…
`python`定制类主要是实现特定功能,通过在类中定义特定的函数完成特定的功能. class Student(object): def __init__(self, name): self.name =name student = Student("lilei") print(student) `实现定制类` class Student(object): def __init__(self, name): self.name = name def __str__(self): ret…
一.Python面向对象中的新旧式类 1)新式类(推荐使用):在定义类时,类后边括号里要继承基类(object).在python3.x中若没有指定父类,会默认使用的是object作为基类:在python2.x中,若没指定父类,则不会以object作为基类. 2)旧式类(经典类):在定义类时,类后边括号中不用继承object类,甚至不用括号. 3)dir方法是用来查看类的内置方法. 二.私有方法和属性 1)私有属性是对象不希望公开的属性:私有方法是对象不希望公开的方法.在定义私有属性和方法时,在属…
OOP——Object Oriented Programming,面向对象编程,是一种程序设计思想.该思想将对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 区别于面向过程的程序设计即把计算机程序视为一系列的命令集合(即一组函数的顺序集合),面向对象的程序设计是把计算机程序视为一组对象的集合,每个对象都可以接受其他对象发过来的消息,并可以处理这些消息,计算机程序的执行就是一系列消息在各个对象之间的传递. ”万物皆对象“! 面向对象的设计思想是人们观察自然中现象的一种认知模式.想想,自…
文章转载自廖雪峰老师Python课程博客,仅供学习参考使用看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让class作用于len()函数. 除此之外,Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类. __str__ 我们先定义一个Student类,打印一个实例: >>> class Student(object):…
Python的面向对象- 面向对象编程 - 基础 - 公有私有 - 继承 - 组合,Mixin- 魔法函数 - 魔法函数概述 - 构造类魔法函数 - 运算类魔法函数 # 1. 面向对象概述(ObjectOriented,OO)- OOP思想 - 接触到任意一个任务,首先想到的是任务这个世界的构成,是由模型构成的- 几个名词 - OO:面向对象 - OOA:面向对象的分析 - OOD:面向对象的设计 - OOI:xxx的实现 - OOP:xxx的编程 - OOA->OOD->OOI: 面向对象的…
一. 抽象类(接口类) 与java一样, python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类, 它的特殊之处在于只能被继承, 不能被实例化. 从设计角度去看, 如果类是从现实对象抽象而来的, 那么抽象类就是基于类抽象而来的.   从实现角度来看, 抽象类与普通类的不同之处在于: 抽象类中有抽象方法, 该类不能被实例化, 只能被继承, 且子类必须实现抽象方法. 这一点与接口有点类似, 但其实是不同的. 实现不同的支付方式: class Alipay: def __init_…
多态 一种事物具备不同的形态 例如:水 --> 固态.液态.气态 多态:# 多个不同对象可以相应同一个对象,产生不同的结果 首先强调,多态不是一种特殊的语法,而是一种状态,特性(多个不同对象可以相应同一个方法,长身不同的结果) 好处:对于使用者而言,使用成本降低 ​ 之前的USB接口下的鼠标,键盘,就属于多态 接口抽象类 鸭子类型都可以写出具备多态的代码(最简单的就是鸭子类型) ''' 要管理 鸡 鸭 鹅 如何能够最方便的管理,就是我说同一句话,他们都能理解 他们拥有相同的方法 ''' clas…
目录 1.理解类和对象 2.类 3.对象 4.Python中的对象 5.类和对象的定义 (1)定义类 (2)创建对象 (3)练习 6.拓展:isinstance() 函数 1.理解类和对象 (1)类和对象的关系 思考:洗衣机洗衣服描述过程中,洗衣机其实就是一个事物,即对象,洗衣机对象哪来的呢? 答:洗衣机是由工厂工人制作出来. 思考:工厂工人怎么制作出的洗衣机? 答:工人根据设计师设计的功能图纸制作洗衣机. 归纳:图纸 → 洗衣机 → 洗衣服. (2)总结: 在面向对象编程过程中,有两个重要组成…
类和对象 目标 类和对象的概念 类和对象的关系 类的设计 01. 类和对象的概念 类 和 对象 是 面向对象编程的 两个 核心概念 1.1 类 类 是对一群具有 相同 特征 或者 行为 的事物的一个统称,是抽象的,不能直接使用 特征 被称为 属性 行为 被称为 方法 类 就相当于制造飞机时的图纸,是一个 模板,是 负责创建对象的 1.2 对象 对象 是 由类创建出来的一个具体存在,可以直接使用 由 哪一个类 创建出来的 对象,就拥有在 哪一个类 中定义的: 属性 方法 对象 就相当于用 图纸 制…
object object 是 Python 为所有对象提供的父类,默认提供一些内置的属性.方法:可以使用 dir 方法查看 新式类 以 object 为父类的类,推荐使用 在 Python 3.x 中定义类时,如果没有指定父类,会默认使用 object 作为该类的父类 所以 Python 3.x 中定义的类都是新式类 旧式类 不以 object 为父类的类,不推荐使用 在 Python 2.x 中定义类,如果没有指定父类,不会使用 object 作为基类 新式类和旧式类的区别 在多继承时,会影…
__str__ 和 __repr__ :实例对象直接显示字符串 class Student: def __init__(self, name): self.name = name def __str__(self): return "Name: %s" % self.name __repr__ = __str__ >>> s = Student("Zoro") >>> s Out[]: Name: Zoro # __str__()…
魔术方法就是不需要人为调用的方法,基本是在特定的时刻自动触发- 魔术方法的统一的特征,方法名被前后各两个下滑线包裹 - 操作类 - `__init__`: 构造函数 - `__new__`: 对象实例化方法,此函数较特殊,一般不需要使用 - `__call__`: 对象当函数使用的时候触发 - `__str__`: 当对象被当做字符串使用的时候调用 - `__repr__`: 返回字符串,跟`__str__`具体区别请百度 - 描述符相关 - `__set__` - `__get__` - `_…
1 类相关函数- issubclass:检测一个类是否是另一个类的子类- isinstance:检测一个对象是否是一个类的实例- hasattr:检测一个对象是否由成员xxx- getattr: get attribute- setattr: set attribute- delattr: delete attribute- dir: 获取对象的成员列表 2 类的成员描述符(属性)- 类的成员描述符是为了在类中对类的成员属性进行相关操作而创建的一种方式 - get: 获取属性的操作 - set:…
# 3. 类和对象的成员分析- 类和对象都可以存储成员,成员可以归类所有,也可以归对象所有- 类存储成员时使用的是与类关联的一个对象- 独享存储成员是是存储在当前对象中- 对象访问一个成员时,如果对象中没有该成员,尝试访问类中的同名成员, 如果对象中有此成员,一定使用对象中的成员- 创建对象的时候,类中的成员不会放入对象当中,而是得到一个空对象,没有成员 - 通过对象对类中成员重新赋值或者通过对象添加成员时,对应成员会保存在对象中,而不会修改类成员 # 4. 关于self- self在对象的方法…
在交互式环境中输入: >>> class A: a=0 def __init__(self): self.a=10 self.b=100 >>> a=A() >>> a.a 10 >>> a.b 100 >>> A.a 0 >>> A.b Traceback (most recent call last): File "<pyshell#10>", line 1, i…
目录 元类 造类 第一阶段 第二阶段 造对象 元类 元类(A) ---> 类(B) ---> 实例(C) 对于实例C而言,它是对象,它的类就是类B 对于类B而言,它其实也是对象,那它的类就是元类A 对于元类A而言,它其实也是对象,那它的类就是自己本身 造类 第一阶段 class Foo: count = 0 def __init__(self,name): self.name = name def eat(self): print("eat") def run(self):…
目录 1.类属性 (1)类属性的访问 (2)修改类属性 2.类属性和实例属性区别 1.类属性 (1)类属性的访问 类属性就是 类对象 所拥有的属性,它被 该类的所有实例对象 所共有. 类属性可以使用 类对象 或 实例对象 访问. # 定义一个类 class Dog(object): # 定义一个类方法 tooth = 10 # 创建对象 wangcai = Dog() xiaohei = Dog() # 类对象调用 print(Dog.tooth) # 10 # 实例对象调用 print(wan…
#coding:utf-8class RoundFloat(object): def __init__(self,val): assert isinstance(val, float),"value must be a float" self.value = round(val,2) def __str__(self): return "{:.2f}".format(self.value) __repr__ = __str__ #def __repr__(self)…
点进来看就完事了铁汁!      …
from enum import Enum Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')) for name, member in Month.__members__.items(): print(name, '=>', member, ',', member.value) Jan => Month.Jan , 1 Feb =&…
目录 Python面向对象06 /元类type.反射.函数与类的区别.特殊的双下方法 1. 元类type 2. 反射 3. 函数与类的区别 4. 特殊的双下方法 1. 元类type type:获取对象从属的类 Python中一切皆对象,类在某种意义上也是一个对象 Python中自己定义的类,以及大部分内置类,都是由type元类(构建类)实例化得来的 # type 获取对象从属于的类 print(type(A)) print(type(str)) print(type(dict)) type与ob…
面向对象设计中最基础的3个概念:数据封装.继承和多态 动态给class增加功能 正常情况下,当定义了一个class,然后创建了一个class的实例后,可以在程序运行的过程中给该实例绑定任何属性和方法,这就是动态语言的灵活性. (1)给一个实例绑定的方法,对另一个实例是不起作用的. (2)为了给所有实例都绑定方法,可以给class绑定方法. Student.set_age=set_age 注:是set_age,而不是set_age(  ) (3) 给class绑定方法后,所有实例均可调用. #定义…
Python:面向对象编程3  定制类(有更新) ⚠️本文主要内容为对Data model相关知识点的提取学习记录.(内容来自文档和部分网页教程案例) ⚠️:这个连接指向<流畅的python>的学习笔记.https://www.cnblogs.com/chentianwei/p/11975199.html 特殊方法名称Special method names 一个类可以通过定义具有特殊名称的方法来实现由特殊语法所引发的特定操作 (例如算术运算或下标与切片). This is Python’s…
1.多成继承 class SmallDog(Animal,Dog) pass MixIn就是一种常见的设计. 2.定制类类似__slots__这种形如 __xxx__ 的变量或者函数名,在python中有特殊的用途的.class中有特殊用途的函数,可以定制类.3.使用枚举类每个常量都是class的一个唯一实例,python提供了Enum类来实现此功能. from enum import Enum Month = Enum('Month',('Jan','Feb','Mar','Apr','May…
当在类体内定义好各种属性后,外部是可以随便添加属性的,Python中类如何限制实例的属性? Python自带了很多定制类,诸如__slots__,__str__ __slots__ __slots__方法是在类创建时,为实例限定属性的 class Student(object): __slots__=('name','age') pass >>>s = Student() >>>s.name='tom' >>>s.age='age' >>&…