面向对象
没有对象,就要深入了解对象,才会有对象!
U盘失踪了
芝士就是力量
展开
-
python 单例模式
设计模式_单例模式实现 单例模式 ( Singleton Pattern ) 的核心作用是确保一个类只有一个实例,并且提供一个访问实例的全局访问点。 单例模式只生成一个实例对象,减少了对系统资源的开销。当一个对象的产生需要比较多的资源,如读取配置文件,产生其他依赖对象时可以产生一个 “单例对象” 然后永久的暂留在内存中,从而极大的降低开销。单例模式class My: __obj = None __init_flag = True def __new...原创 2021-11-27 19:02:29 · 150 阅读 · 0 评论 -
python 工厂模式
设计模式_工厂模式实现 设计模式是面向对象语言特有的内容; 常用模式:工厂模式和单例模式 工厂模式实现了创建者和调用者的分离,使用专门的工厂类将选择实现类,创建对象进行统一管理和控制class School: def Student(self,child): if child == '男孩': return Scientist() elif child == '男青年': re...原创 2021-11-27 18:38:34 · 612 阅读 · 0 评论 -
python 组合
继承使用继承的方法实现代码复用class A: def hello(self): print('hi')class B(A): passb = B()b.hello()组合使用组合的方法实现代码复用class A: def hello(self): print('hi')class B: def __init__(self,a): self.a = ab = B(A())b.a.he原创 2021-11-27 18:14:17 · 333 阅读 · 0 评论 -
python 的浅复制和深复制
变量的赋值操作 只是形成两个变量,实践还是指向同一个对象。浅复制 Pyhton 复制一般都是浅复制。复制对象,但是对包含的子对象内容不复制; 源对象和复制的对象会引用同一个子对象深复制 使用copy 模块的 deepcopy 函数 ,递归复制对象中包含的子对象。 源对象和复制的对象的子对象也不同 import copyclass Moblie: def __init__(self,cpu,sc...原创 2021-11-27 17:29:02 · 731 阅读 · 0 评论 -
python 特殊属性
Python 对象中包含了很多双下划线开始和结束的属性,这些是特殊属性,有特殊用法特殊方法 含义 obj.__dict__ 对象的属性字典 obj.__class__ 对象所属的类 class.__bases__ 类的基类元组(多继承) calss.__base__ 类的基类 class.__mro__ 类层次结构 class.__subclasses_() 子类列表 class A: def aa(se原创 2021-11-27 14:05:23 · 248 阅读 · 0 评论 -
python MRO()
Python 支持多继承,如果父类中有相同名字的方法,在子类没有指定父类名时,解释器将“从左向右” 按顺序搜索MRO (Method Resolution Order) : 方法解析顺序。我们可以通过mro() 方法获得 “类的层次结构” , 方法解析顺序也是按照这个 “类的层次结构” 寻找class A: def test_a(self): print('A类') def MM(self): print('MM_A')class...原创 2021-11-25 20:42:08 · 671 阅读 · 0 评论 -
python object 根类
查看类的方法 mro() 或 类的 属性 __mor__ 可以输出类的继承层次结构class A:passprint(A.mro())class B(A):passprint(B.mro())class C(B):passprint(C.mro())object 类是所有类的父类,因此所有的类都有 object 类的属性和方法。dir() 查看对象属性class Student: def __init__(self,name,age): self.n原创 2021-11-24 20:50:46 · 239 阅读 · 0 评论 -
python 多态
多态是指同一个方法调用由于对象不同可能会产生不同的行为。1,多态是方法的多态,属性没有多态2,多态的条件为继承和方法重写原创 2021-11-27 13:41:59 · 229 阅读 · 0 评论 -
python 子类重写继承父类的方法
类成员的继承和重写1、成员的继承:子类继承了父类除构造方法之外的所有成员、2、方法的重写:子类可以重新定义父类中的方法,这样就会覆盖父类点的方法,也称为‘重写’子类继承父类方法class Student: def __init__(self,name,age): self.name = name self.__age = age def say_age(self): print("我的年龄:",self.__a原创 2021-11-24 20:27:59 · 3536 阅读 · 0 评论 -
python 多重继承
Python 支持多重继承,一个子类可以有多个 ‘直接父类’。这样,就具备了 ‘多个父类’的特点; 容易导致类的整体异常复杂,谨慎使用class A: def test1(self): print('A类')class B: def test2(self): print('B类')class C(A,B): def test3(self): print('C类') C1 = C()...原创 2021-11-24 21:10:24 · 271 阅读 · 0 评论 -
python 继承
继承是实现对代码的复用,如果一个新类继承一个设计好的类,就直接具备了已有类的特征,可以降低工作难度;已有的类,称为父类或者基类,新的类,称为子类或者派生类Python 支持多重继承,一个子类可以继承多个父类。class 子类名(父类名1[,父类名2,...]): 类体如果类定义没有指定类,默认父类是object类;class Student: def __init__(self,name,age): self.name = nam...原创 2021-11-22 20:29:28 · 203 阅读 · 0 评论 -
python 面向对象的封装,继承,多态
Python 是面向对象的语言,也是支持面向对象编程的三大特性:封装,继承,多态封装在程序设计中,封装(Encapsulation)是对具体对象的一种抽象,即将某些部分隐藏起来,在程序外部看不到,其含义是其他程序无法调用。 隐藏对象的属性和实现细节,只对外提供必要的方法。相当于将 ‘细节封装起来’ ,只对外暴露 ‘相关调用方法’继承 继承可以让之类具有父类的特性;提高代码的重用性; 在父类设计不变的情况下,增加新的功能...原创 2021-11-22 20:00:02 · 198 阅读 · 0 评论 -
python @property 装饰器
@property 可以将一个方法的调用方式变成 “属性调用”。为什么用 property : 希望将访问私有属性和普通属性的方式变得一致与property相关的两个装饰器: setter : 用点语法 给属性赋值时触发 deleter: 用点语法删除属性时触发class Student: def __init__(self,name,salary): self.__name = name self.__salary = salary..原创 2021-11-21 22:02:02 · 75 阅读 · 0 评论 -
python 私有属性和私有方法
原创 2021-11-21 20:50:54 · 671 阅读 · 0 评论 -
python 方法没有重载和方法的动态性
方法没有重载方法的签名包含3个部分:方法名 参数数量 参数类型python 方法的参数没有类型(调用时确定参数的类型),参数的数量也可以由可变参数控制。因此pyhton没有方法的重载;;# python 没有方法的重载。定义多个同名方法,只有最后一个有效;;class Student: def name(self): print('小明') def name(self,name): print('{0},hello'.form原创 2021-11-21 20:35:39 · 278 阅读 · 0 评论 -
python 类对象
class 类名 ,当解释权执行class 语句时, 就会创建一个类对象# 类对象class Student: pass print(type(Student))print(id(Student))Stu2 = Students1 = Stu2()print(s1)通过赋值给新变量Stu2实现调用Student类pass 为空语句。作为一个占位符存在。...原创 2021-11-21 16:06:40 · 110 阅读 · 0 评论 -
python __call__ 方法和可调用对象
__call__ 方法的对象,称为 “可调用对象” ,即使对象可以像函数一样被调用、# 可调用方法 __call__()class Sa: def __call__(self, salary): print('计算') yearsalary = salary * 12 daysalary = salary // 23.5 hoursalary = daysalary // 8 return ...原创 2021-11-21 15:58:14 · 127 阅读 · 0 评论 -
python 特殊方法和运算符重载
特殊方法和运算符重载Python 的运输符实际上是通过调用对象的特殊方法实现的a = 10b = 10c = a + bd = a.__add__(b)print('c=',c)print('d=',d)特殊方法方法 说明 例子 __init__ 构造方法 对象创建:p = Person() __del__ 析构方法 对象回收 __call__ 函数调用 a() __getattr__ 点号运算 a.原创 2021-11-21 13:04:19 · 616 阅读 · 1 评论 -
python 重写__str__() 方法
默认print __init__ 输出的默认情况下,是输出这个变量引用的对象是由哪一个类创建的对象,以及在内存中的地址# 重写object的__str__()class Student: # 默认继承object类 def __init__(self,name): self.name = name p = Student("小明")print(p)当使用print输出对象的时候,若定义了__str__(self)方法,打印对象时就会从这个方法中..原创 2021-11-21 12:30:51 · 993 阅读 · 0 评论 -
python __del__ 和垃圾回收机制
__del__ 方法称为 “析构方法”, 用于实现对象被销毁时所需的操作。比如:释放对象占用的资源,例如:打开的文件资源,网络连接等。。。 Python 实现的自动垃圾回收,当对象没有被引用是(引用计数为0),由垃圾回收器调用__del__方法 通过del 语句删除对象,从而保证调用 __del__ 方法 系统会自动提供 __del__ 方法 ,一般不需要自定义析构方法class Student: def __del...原创 2021-11-21 12:19:30 · 199 阅读 · 0 评论 -
python 类属性和类方法
类属性类属性是从属于 类对象 的属性,也叫 类变量 ,类属性从属于类对象,可以被所有实例对象共享、类属性的定义方式: class 类名: 类变量名 = 初始值在类中或者类的外面,通过:类名.类变量名 来读写class Student(): com = 'XSE' # 类属性 max = 0 # 类属性 count = 0 def __init__(self,name,score):...原创 2021-11-19 20:53:08 · 517 阅读 · 0 评论 -
python TypeError: ‘int‘ object is not callable
对象不可调用,调用Int型数据,这个错误之所以发生,是因为我变量名和函数名写重复了当这两个名称重复时,程序会默认调用Int型对象,但Int对象没有什么调用可言,就爆出了这个错误,解决方法也很简单,要么更改变量名,要么更改方法名。......原创 2021-11-19 20:43:37 · 733 阅读 · 0 评论 -
python 方法调用过程
a = Student() =====》 Student.say_score(a)a.say_score() =====》1,dir(obj) 可以获取对象的所有属性,方法2,obj.__dict__ 对象的属性字典3,pass 空语句4,isinstance (对象,类型) 判断 “对象” 是不是 “指定类型” ;;判断实例化对象print(dir())cl...原创 2021-11-19 20:30:39 · 288 阅读 · 0 评论 -
Python 实例属性
实例属性实例属性是从属于实例对象的属性,也称为 “实例变量” 。1,实例属性一般在__ init __( ) 方法中:self实例属性名 = 初始值2,在本类的其他实例方法中,也是通过self 进行访问:self实例属性名3,创建实例对象后,通过实例对象访问:obj01 = 类名() # 创建对象,调用 __init__() 初始化属性obj01.实例属性名 = 值 # 可以给己有属性赋值,也可以新加属性...原创 2021-11-18 21:38:31 · 800 阅读 · 1 评论 -
python 构造函数__init__()
构造函数类是抽象的,也称之为对象的模板。我们需要通过类这个模板,创建类的实例对象,然后才能使用类定义的功能。python的对象包含 id(identity 识别码), type(对象类型), value(对象的值), 属性(attribute) 方法(method) 创建对象,需要定义构造函数方法。 构造方法用于执行“实例对象的初始化工作”,即对象创建后,初始化当前对象的相关属性,无返回值构造函数特点:1,名称固定,必须为:__init__原创 2021-11-02 22:02:36 · 482 阅读 · 0 评论 -
python 类里面函数的self
Python 要求,类方法(构造方法和实例方法)中至少要包含一个参数,但并没有规定此参数的名称(完全可以叫任意参数名),之所以将类方法的第一个参数命名为 self,只是 Python 程序员约定俗成的一种习惯,这会使程序具有更好的可读性。通常在写class的时候,定义多个方法,只需要self.一下这个方法名就可以调用和执行这个方法,这实际上是一个python的内部寻址机制,叫做命名空间检索。1,self名称不是必须的,在python中self不是关键词,你可以定义成a或b或其它名字都可以..原创 2021-11-01 22:49:06 · 5502 阅读 · 0 评论 -
python 类的定义
类的定义把对象比作为一个饼干,类就是制作饼干的模具类的结构类的结构包含,方法(函数)->行为和属性 (变量) ->状态class Student: # 类名一般为首字母大写,多个单词采用驼峰原则 company = "广东靓仔" # 类属性 count = 0 # 类属性 def __init__(self,name,score=66): # self指的是当前对象本身 self.name ...原创 2021-11-01 21:55:21 · 176 阅读 · 0 评论 -
python 对象
class Student: company = "广东靓仔" # 类属性 count = 0 # 类属性 def __init__(self,name,score): self.name = name # 实例属性 self.score = score Student.count = Student.count+1 def say_score(self): # 实例方法 p.原创 2021-11-01 21:41:40 · 69 阅读 · 0 评论