staticmethod自己定制】的更多相关文章

class StaticMethod: def __init__(self,func): self.func=func def __get__(self, instance, owner): #类来调用,instance为None,owner为类本身,实例来调用,instance为实例,owner为类本身, print("hhahaha") def feedback(*args,**kwargs): print('在这里可以加功能啊...') return self.func(*arg…
1.面向对象概述 1.类是用来描述对象的工具,把拥有相同属性和行为的对象分为一组     2.对象是由类实例化出来的一个具体的对象         属性: 对象拥有的名词,用变量表示         行为: 对象拥有的动作,用方法表示     3.面向对象是把一切看成对象,对象和对象之间用方法建立关联关系     4.面向过程是一件事怎么一步一步实现,面向对象是一件事情谁去实现     5.可以用类创建一个或多个此类的对象,类中的变量和方法能被此类所创建的所有对象所共同拥有     6.面向对象…
方法 在上一篇随笔中,简单提到了类的某些方法:__init__()等的调用,并简要说明方法和函数的区别. 方法是在类内部定义的函数,方法也是对象,所以方法是类的属性,这就是为什么说实例的方法存在于类定义中.而在ruby中,方法肯定是存在于类中的,实例的单件方法就存在于单件类中,python中并没有单件类,并且方法本质也是变量,任何对象在调用方法时,遵循命名空间的查找顺序,不论是对象还是类,其方法不过是对函数对象的引用.但是方法和一般是属性任然存在区别: from types import Met…
1,new方法: 类每次实例化时都会创建一个新的对象, class Textcls: # cls 是指类本身, def __new__(cls, *args, **kwargs): # 在 __init__ 前触发, if not hasattr( cls,'inst' ): # 判断是否有 inst 的属性 cls.inst = super().__new__(cls) # 调用 __new__ 方法,为当前类创建空间 # 如果没有 创建属性给实例,此时 属性= c1 return cls.i…
Python标准logging模块中主要分为四大块内容: Logger: 定义应用程序使用的接口 Handler: 将Loggers产生的日志输出到目的地 Filter: 对Loggers产生的日志进行过滤 Formatter: 格式化Loggers产生的日志 其中常用的是Logger, Handler, Formatter. 目标 对logging模块进行封装,使其尽量达到几个目标: 易用性:尽量保持python原生标准的用法. 扩展性:避免将所有模块集中在一个文件中进行配置,而是对不同模块继…
new方法和单例.定制访问函数.装饰器 上节课作业解答 # 通过多重继承方法,分别定义出动物,人类,和和荷兰人三种类 class Animal(object): def __init__(self, name): self.name = name ​ def eat(self): print('%s正在吃东西' % self.name) ​ def breath(self): print('%s正在呼吸' % self.name) ​ ​ class Person(Animal): def __…
__new__方法的运行顺序 装饰器的概念的用法 三个内置装饰器 类中属性的访问过程 __new__方法 创建实例的方法 __new__方法是在类创建实例的时候自动调用的 实例是通过类里面的__new__方法创建出来的 先调用__new__方法创建实例,再调用 __init__方法初始化实例 __new__方法,后面括号里的cls代表的是类本身 必须有返回值 父类名.__new__(cls) 单例模式 创建多个实例的时候,每个实例所指向的内存地址不同 单例模式让多个实例引用的是同一个实例,是一个…
多态 1.什么是多态? 多态指的是同一种类型的事物,不同的形态. 2.多态的目的: “多态” 也称之为 “多态性”,目的是为了 在不知道对象具体类型的情况下,统一对象调用方法的规范(比如:名字). 多态的表现 “形式之一” 就是继承: - 先抽象,再继承 父类: 定制一套统一的规范.(比如: 方法名统一) 子类: 遵循父类的统一的规范.(比如: 子类遵循父类方法名的统一) 注意: 在python中不会强制限制 子类 必须要遵循 父类 的规范,所以出现了抽象类. # 动物类 class Anima…
在之前的文章中,我在之前的文章中提到过,这里呢,考虑后,感觉之前的写法不够优雅,于是乎呢,我自己抽空去研究了下,主要是新写方法,这样呢,以后的要使用的时候,可以直接去使用,而不是每次换个环境就要修改环境中的unittest的类库. 首先呢,我们对main方法进行修改 # -*- coding: utf-8 -*- import sys import argparse import os from load import defaultTestLoader from unittest import…
一.封装之property @property把一个函数伪装成一个数据类型  @伪装成数据的函数名.setter   控制该数据的修改,修改该数据时触发 @伪装成数据的函数名.delect  控制该数据的删除,删除该数据时触发 class People: def __init__(self,name): self.__name=name @property #将name()函数伪装成一个数据属性name def name(self): #obj.name print('您现在访问的是用户名...…