类属性 顾名思义,类对象拥有的属性,被该类的所有的实例对象所共同拥有 可以被类对象、实例对象访问 class Gun(object): length = 10 wuzi = Gun() print (Gun.length) print(wuzi.length) 均输出为10 修改类属性 此时不能用实例对象修改类属性,如果还是用实例对象修改类属性,那么相当于自己创建了一个新的实例属性,而并没有修改类属性 ,唯一方法是通过类属性进行直接修改 类方法 类方法一般用于获取类对象,常与类属性一起使用 class Gun(object): __length = 10 @classmethod def get_length __length 注意此时self改为cls,并且有一个装饰器@classmethod 静态方法 不需要写cls/self 能通过实例对象和类对象访问,为了减少内存消耗 class Gun(object
前言 上一节主要记录面向对象编程的思想以及Python类的简单创建,这节继续深入类中变量的相关知识,Here we go! Python中类的各种变量 1.1 类变量 类变量定义:在类中,在函数体(方法)外的变量称为类变量。 类变量在整个类中是公用的 类变量初始化:按照以上定义,类变量的初始化如下 1 class Doctor: 2 ''' 3 类变量的初始化 4 ''' 5 salary = 实例变量初始化:按照上面定义,实例变量的初始化如下 1 class Doctor: 2 ''' 3 初始化实例变量 4 ''' 5 6 def talk(self): lisi.talk() # 必须先执行talk方法才能访问talk方法里面的实例变量 print(lisi.sentence) # 类外访问实例变量 1.3 类变量、实例变量与全局变量、局部变量的异同点 在Python
Python3 面向对象 python是一门面向对象语言,在python中有一句话:一切都是对象 ---- 面向对象简介 类(Class): 用来描述具有相同的属性和方法的对象的集合。 /usr/bin/python3 class Computer: __slots__ =('__name', 'mem', 'cpu') # 为节省资源,不允许实例对象随意添加属性 def __init /usr/bin/python3 class Computer: __slots__ =('_name', 'mem', 'cpu') # 为节省资源,不允许实例对象随意添加属性 def __init /usr/bin/python3 class Computer: __slots__ =('_name', 'mem', 'cpu') # 为节省资源,不允许实例对象随意添加属性 def __init /usr/bin/python3 class Computer: __slots__ =('_name', 'mem', 'cpu') # 为节省资源,不允许实例对象随意添加属性 def __init
Python面向对象总结3-其他 目标 面向对象三大特性 类属性和实例属性 类方法和静态方法 一. 面向对象三大特性 封装 将属性和方法书写到类的里面的操作即为封装 封装可以为属性和方法添加私有权限 继承 子类默认继承父类的所有属性和方法 子类可以重写父类属性和方法 多态 传入不同的对象 类属性和实例属性 3.1 类属性 3.1.1 设置和访问类属性 类属性就是 类对象 所拥有的属性,它被 该类的所有实例对象 所共有。 类属性可以使用 类对象 或 实例对象 访问。 静态方法 也能够通过 实例对象 和 类对象 去访问。 总结 面向对象三大特性 封装 继承 多态 类属性 归属于类对象的属性,所有对象共有的属性 实例属性 类方法 @classmethod def xx(): 代码 静态方法 @staticmethod
# 面向对象 import abc from enum import Enum, unique @unique # unique确保无重复值 class Weekday(Enum): """ 枚举类 """ # 左边为name,右边为value Sun = 0 Mon = 1 Tue = 2 Wed = 3 Thu =
面向对象程序设计的基本步骤: 1、根据功能、抽象业务对象。 2、构建独立的业务模块,利用封装、继承、多态等抽象业务需求。 3、编写程序。 4、以对象为单位输入参数、开展测试。 %(self.name,self.age)) #类的继承 #需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法 __init__(self,n,t) #创建实例 test = Sample("Tim",25,80,4,"python") #调用实例的方法 #方法名同,默认调用的是在括号中排前地父类的方法 test.speak () 类的专有方法: __init__ : 构造函数,在生成对象时调用 __del__ : 析构函数,释放对象时使用 __repr__ : 打印,转换 __setitem__ : 按照索引赋值 __getitem
继承 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制。继承完全可以理解成类之间的类型和子类型关系。 子类只继承父类所有公有的属性和方法,并且也可以在子类中通过父类名来调用,而对于私有的属性和方法,子类是不进行继承的,因此在子类中是无法通过父类名来访问的 继承的本质 对于面向对象的继承来说,其实就是将多个类共有的方法提取到父类中 Python中super函数只能在构造方法中使用。 在Python中,所有的特性都是公开可用的,但是程序员应该在直接访问对象数据与操作数据时谨慎行事,因为他们可能无意中使得这些特性在某些方面不一致。 return 1 calc = Calculator() from random import choice obj = choice(["hello,world",[1,2,3]
类 用于定义表示用户定义对象的一组属性的原型。属性是通过点符号访问的数据成员(类变量和实例变量)和方法。
image.png 3、super().call_me() 4、property用法: class Foo: @property def foo(self): return self.
笔记内容:Python3 面向对象
笔记日期:2017-11-13
----
Python3 面向对象
Python3 面向对象
面向对象技术简介
类的定义
类的对象
类的方法
继承
多继承 方法重写
类的私有属性与私有方法
Python3 面向对象
----
Python从设计之初就已经是一门面向对象的语言,所以我们可以以面向对象的方式去编写python代码。 我这里只是简单的描述了一下面向对象的概念,如果你以前没有接触过面向对象的编程语言,那你可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习Python 和其它编程语言相比,Python 在尽可能不增加新的语法和语义的情况下加入了类机制,所以在这一方面和其他面向对象的编程语言有所差异。
继承
----
Python 同样支持类的继承,如果一种面向对象语言不支持继承,类就没有什么意义。
3)d[('k','3')]对应的value是一个什么数据类型 d = {'k1': 'v1', 'k2': [1, 2, 3], ('k', '3'): {1, 2, 3}} for i in d: os模块 os.path.exists() 判断文件夹存不存在 os.path.getsize() 取这个文件的大小 16 简单解释Python中static method(静态方法)和class format(ss)) break content(10) 二 面向对象 1 请简述类、对象、实例化、实例这些名词的含义 类:具有相同属性和方法的一系列事物 对象:具体描述某一类的个体 实例化:创造实例(对象)的过程 实例:一个实例就是一个对象 2 面向对象的三大特性是什么? print(' ') class Foo(Base): def f2(self): print('9999') obj = Foo() obj f1() 问题1:面向对象中的
面向对象编程 面向对象编程——Object Oriented Programming,简称 OOP,是一种程序设计思想,把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息 在 OOP 编程中对象是 OOP 程序的基本单元,一个对象包含了数据和操作数据的函数,在 Python 中,所有数据类型都可以视为对象,也可以自定义对象,自定义的对象数据类型就是面向对象中的类( Class 面向对象编程 OOP:面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。 类的理解与定义 类的理解和面向对象编程不是看一篇文章和一本书能彻底学会的,需要反复学习和不断的实践才能彻底掌握,可以找一本经典的书籍来看,可惜,我目前也没有找到经典的 Python 面向对象编程的书籍。 参考资料 《廖雪峰-Python3教程》 Python中下划线的5种含义 面向对象的三大特性(封装、继承、多态) Python 类属性和类方法 彻底搞懂python super函数的作用 封装、继承和多态
) # 对象能找到类,类里面绑着方法 print(b.func2) # func3 静态方法 不是绑定方法 没有和对象或者类发生任何绑定关系 print(A.func3) print(a.func3 print(issubclass(D,B)) # 判断D是不是B的子类 print(issubclass(D,A)) # 判断D是不是A的子类 执行结果 True True True True 面向对象进阶 *****7星) 1 什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问,检测和修改它本身状态或行为的一种能力(自省),它首先被程序语言的设计领域所采用,并在Lisp和面向对象取得了成绩 2 python面向对象中的反射:通过字符串的形式操作对象相关的属性。 python中的一切事物都是对象(都可以使用反射) 四个可以实现自省的函数 下列方法适用于类和对象(一切皆对象,类本身也是一个对象) 反射 正常情况下如果可以拿到这个变量, 那么如有这个变量的字符串形式
Contents 1 面向对象基本概念 2 创建类 3 实例 4 init() 方法 5 创建实例对象 6 参考资料 面向对象编程——Object Oriented Programming,简称 OOP OOP 把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。 面向对象基本概念 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。 self 不是 python 关键字,我们把他换成 runoob 也是可以正常执行的。 创建实例对象 实例化类其他编程语言中一般用关键字 new,但是在 Python 中并没有这个关键字,类的实例化类似函数调用方式。 面向对象 《廖雪峰-Python3教程》
概述 面向对象编程(Object Oriented Programming,即 OOP),是一种程序设计思想,比面向过程编程更加灵活,更易扩展。 Python 在设计的时候就是按照面向对象编程的思想设计的,像我们前面学过的各种数据类型,如字符串、列表、字典等都是一个个对象,它们都具有各自的属性和行为。 面向对象编程就是将客观存在的事物,总结提炼出它们各自的属性与行为,然后通过编程的方法形成一个模版(即类),我们就可以根据这个模版创建出一个个实际的、可使用的对象(即类的实例)。 方法 每个对象都有其独有的行为,在面向对象编程中把这些行为称为方法,也就是面向过程编程中的函数,但是有些微差别。 方法需要在定义类的时候一起定义,这样类的实例就可以使用这些方法。 所以,子类除了可以继承父类,还可以根据自己的特点增加自己的特性,修改从父类集成的特性,也就是面向对象编程的多态。
新房子没有任何的家具,代表构造方法不需要给家具名称列表属性初始化赋值 但房子其实还有一个特殊属性,剩余面积,它的初始值应该和总面积相同 房子添加家具后,剩余面积应该减掉家具的占地面积 席梦思、衣柜、餐桌都是一个具体的对象 ,都是家具类的实例对象 思考:房子、家具两个类应该先开发哪个类 家具类 因为家具类简单,只有两个方法,且没有行为 房子要使用到家具,被依赖的类,通常应该先开发,可以避免在开发主类过程中,要中途插入开发被依赖的类 item.name) return # 2、添加家具名称 self.item_list.append(item.name) # 3、 # 创建三个家具 bed = HouseItem("席梦思", 4) chest = HouseItem("衣柜", 2) table = HouseItem("餐桌", 1.5) # 创建房子实例对象
面向对象是比较复杂的概念,初学很难理解。我曾经对人夸张地说,面向对象是颠覆你编程三观的东西,得花上不少时间才能搞清楚。我自己当年初学Java的时候,也是折腾了很久才理清点头绪。 有了面向对象之后,程序的执行路径就变得复杂,很容易让人混乱。不过当你熟悉之后会发现,面向对象是比面向过程更合理的程序设计方式。 今天我用一个例子来展示两种程序设计方式的不同。 面向过程的方法: speed = 60.0 distance = 100.0 time = distance / speed print time 面向对象的方法: class Car: speed = distance2 / speed1 print time2 speed2 = 150.0 time3 = distance1 / speed2 print time3 time4 = distance2 而面向对象,把一类数据和处理这类数据的方法封装在一个类中,让程序的结构更清晰,不同的功能之间相互独立。这样更有利于进行模块化的开发方式。 面向对象的水还很深,我们这里只是粗略一瞥。
https://blog.csdn.net/zzw19951261/article/details/80314944 Python 面向对象的总结 1. 在类外部获取 属性 和 实例方法,通过对象名获取。 c. 如果一个类有多个对象,每个对象的属性是各自保存的,都有各自独立的地址; d. 但是实例方法是所有对象共享的,只占用一份内存空间。 类会通过self来判断是哪个对象调用了实例方法。 2. __del__ a. 监听对象是否销毁 b. 人为销毁对象 del 对象 c. 当地址的引用计数为0的时候,才会执行del 3. 实例方法: 相同的类,创建出来的不同对象,调用的是同一个方法 通过实例方法的第一个形参(self) 来判断通过那个对象调用的这个方法 11. 类属性和实例属性 a.
继承 继承分为单继承和多继承 python中类的分类 这里需要补充一下python中类的种类(继承需要): 在python2x版本中存在两种类.: ⼀个叫经典类. 在python2.2之前. 在python2.2之后出现了新式类. 新式类的特点是基类的根是object类。 python3x版本中只有一种类: python3中使⽤的都是新式类. 如果基类谁都不继承. 同⼀个对象, 多种形态. 这个在python中其实是很不容易说明⽩的. 因为我们⼀直在⽤. 只是没有具体的说. 比如. 我们创建⼀个变量a = 10 , 我们知道此时a是整数类型. 面向对象中的反射:通过字符串的形式操作对象相关的属性。 python中的一切事物都是对象(都可以使用反射) Python实现自省的函数hasattr、getattr、setattr、delattr 应用于对象的反射 class Foo: f = '
# Python 面向对象 # 编程思想 编程届的两大阵营 面向过程 面向对象 区别 实物比较简单,可以用线性的思想去解决 事物比较复杂,使用简单的线性思维无法解决 共同点 面向过程和面向对象都是解决实际问题的一种思维方式 二者相辅相成,并不是对立的,解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间的复杂的关系。 在python中没有专门的修饰符用于属性的私有,如果该属性不希望在类对象外部被访问,前面使用两个"_"。 ,源对象和拷贝对象所有的子对象也不相同 #深拷贝 print('--------------------------------------------------------') computer3 computer3.cpu,computer3.disk) #<__main__.Computer object at 0x000002C0468E95E0> <__main__.CPU object