Python学习_12_方法和类定制】的更多相关文章

方法 在上一篇随笔中,简单提到了类的某些方法:__init__()等的调用,并简要说明方法和函数的区别. 方法是在类内部定义的函数,方法也是对象,所以方法是类的属性,这就是为什么说实例的方法存在于类定义中.而在ruby中,方法肯定是存在于类中的,实例的单件方法就存在于单件类中,python中并没有单件类,并且方法本质也是变量,任何对象在调用方法时,遵循命名空间的查找顺序,不论是对象还是类,其方法不过是对函数对象的引用.但是方法和一般是属性任然存在区别: from types import Met…
一.类简单介绍 1.介绍 类是Python面向对象程序设计(OOP)的主要工具,类建立使用class语句,通过class定义的对象. 类和模块的差异,类是语句,模块是文件. 类和实例 实例:代表程序领域中具体的元素. 类是生产实例的工厂,实例就像带有“数据"的记录,而类是处理这些记录的“程序”. 类是实例工程,类的属性提供行为(数据以及函数[方法]),所有从类产生的实例都继承该类的属性. 类的一个实例可以通过:实例.属性,实例.方法,获得类的属性和方法调用.类支持继承,当我们对class语句产生…
参考:http://python.jobbole.com/82308/ 继承和__slots__属性 1. 继承    在Python中,同时支持单继承与多继承,一般语法如下: class SubClassName(ParentClass1 [, ParentClass2, ...]): class_suite 实现继承之后,子类将继承父类的属性,也可以使用内建函数insubclass()来判断一个类是不是另一个类的子孙类: class Parent(object): ''' parent cl…
在Python中,可以通过class关键字定义自己的类,通过类私有方法“__init__”进行初始化.可以通过自定义的类对象类创建实例对象. class Student(object): count = 0 books = [] def __init__(self, name, age): self.name = name self.age = age pass 1. 数据属性 在上面的Student类中,”count””books””name”和”age”都被称为类的数据属性,但是它们又分为类…
虽然Python是解释性语言,但是它是面向对象的,能够进行对象编程. 类和对象是面向对象编程的两个主要方面.类:创建一个新类型,而对象是这个类的实例,类使用class关键字创建.类的域和方法被列在一个缩进块中. 当一个类定义完之后,就产生了一个类对象.类对象支持两种操作:引用 和 实例化. 引用操作是通过类对象去调用类中的属性或者方法,而实例化是产生出一个类对象的实例,称作实例对象. class people: # 定义了一个类 name = 'jack' # 定义了一个属性 age = 12…
什么是描述符类? 根据鸭子模型理论,只要具有__get__方法的类就是描述符类. 如果一个类中具有__get__和__set__两个方法,那么就是数据描述符,. 如果一个类中只有__get__方法,那么是非数据描述符. __get__:当我们用类或者实例来调用该属性时,Python会返回__get__函数的结果. __set__:当我们用实例来设置属性值时,Python会调用该函数.对类没有限制作用. __delete__:当我们用实例试图删除该属性时,Python会调用该函数.对类没有限制作用…
类命名空间 在一个类中它的函数(方法)属于动态属性,直接定义的变量属于静态属性 首先先定义一个类,并在这个类里面加入静态变量.属性等然后将一个对象实例化 class Fighter: #定义一个战机的类 price = 5000 #静态变量 def __init__(self,name,speed,atk,hp): self.name = name self.speed = speed self.atk = atk self.hp = hp def Attack(self): print('本次…
子类中调用父类的方法 1.子类继承了父类的方法,然后想进行修改,那么就需要在子类中调用父类的方法. 2.方法一:父类名 class School: Country = 'china' def __init__(self,name,address): self.name = name self.address = address def go(self): print('开学啦~~~!') class Qh(School): def __init__(self,name,address,phone…
27. 属性的__dict__系统 1)对象的属性可能来自: 其类的定义,叫做类属性 继承父类的定义 该对象实例定义(初始化对象时赋值),叫做对象属性 2)对象的属性存储在对象的 __dict__ 属性中: __dict__ 为字典,键为属性名,值是属性本身. 例子: class bird(object): feather = True # 父类 class chicken(bird): fly = False def __init__(self, age): self.age = age #…
在学习dict的时候,肯定听过dict是Python中最重要的数据类型,但是不一定知道为什么.马上你就会明白原因了. Python中从模块.到函数.到类.到元类,其实主要管理方法就是靠一个一个的字典. 函数dir 先来学一个重要的内置函数. dir返回一个列表. 列表中包含了实例的属性名,实例的类的属性名,实例的所有超类的属性名. 如果你想获取一个对象所有有效属性,你应该使用dir()来替代__dict__或者__slots__. 我们先来写一个没有什么实际意义的module. a.py pri…
元类的介绍 请看位于下面网址的一篇文章,写的相当好. http://blog.jobbole.com/21351/ 实例补充 class Meta(type): def __new__(meta, cls, parent, attr_dict): res = super(Meta, meta).__new__(meta,cls, parent, attr_dict) print('meta new stage, %s is %s, %s is %s' % (meta, type(meta), c…
类 Python是面向对象的语言,面向对象最重要的三个优点有: 多态:多态使对象具备不同的行为方式.(可以认为声明了接口,但是实现方式可能多样) 封装:封装是对全局作用域中隐藏多余信息的原则(创建对象,隐藏属性,不用担心对全局产生影响,也不用担心全局影响对象属性) 继承:继承使得代码可以复用,而且使得类之间有超类和子类的概念 创建类 类的可见级别在类中分别定义了一个公共的方法greet,保护方法_protectmethod,私有方法__privatemethod.如同通过Tab键进行函数定义控制…
Python与java.c++等都被视为一种面向对象的语言.通过创建自定义类,用于处理各种业务逻辑.面向对象有封装.继承.多态三个特征,这也是面子对象语言的通用特征. 1 封装 封装,是值向外部隐藏内部不必要的具体实现. 2 继承 继承,是值通过一次创建类,而以后再次创建的类与该类的方法有重合的,可以使用继承,这样就避免了再次编写,减少了代码的冗余.python支持多继承. 3 多态 多态,值能够同样的对不同的类型的对象调用相同的方法. 4 类 类,表示一组对象,每个对象都属于特定的类.如果一个…
静态方法 类方法 属性方法 通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访问实例变量和类变量的方法,其实相当于跟类本身已经没什么关系了,它与类唯一的关联就是需要通过类名来调用这个方法 类方法通过@classmethod装饰器实现,类方法和普通方法的区别是, 类方法只能访问类变量,不能访问实例变量 属性…
本节主要的内容: 1.依赖关系 2.关联关系,组合关系,聚合关系 3.继承关系,self到底是什么? 4.类中的特殊成员 一.类与类之间的依赖关系 在面向对象的世界中,类与类中存在以下关系: 1.依赖关系 2.关联关系 3.组合关系 4.聚合关系 5.继承关系 6.实现关系 由于python是一门弱类型编程语言,并且所有的对象之间其实都是多态关系,也就是说,所有的东西都可以当做对象来使用. 所以我们在写代码的时候很容易形成以上关系.首先我们先看第一种,也就是这些关系中紧密程度最低的一个,依赖关系…
元类(MetaClasses) 元类提供了一个改变Python类行为的有效方式. 元类的定义是“一个类的类”.任何实例是它自己的类都是元类. class demo(object): pass obj = demo() print "Class of obj is {0}".format(obj.__class__) print "Class of obj is {0}".format(demo.__class__) # Class of obj is <cla…
在上一篇文章中,我们介绍了 Python 的正则表达式和元字符,现在我们介绍 Python 的字符类和对元字符进行深入讲解.查看上一篇文章请点击:https://www.cnblogs.com/dustman/p/10027947.html 字符类字符类提供了一种只匹配特定字符集中的一个字符的方法.字符类通过方括号把一列字符或一个范围括在一起. import re string1 = "python" string2 = "eggs" string3 = "…
面向对象编程 面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行.为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度. 而面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列…
1. 变量命名总结: - 1.单下划线开头变量:protected - 2.双下划线开头变量:private - 3.双下划线开头,双下划线结尾:系统内置变量 2. 函数命名总结: - 1.私有方法:小写和一个前导下划线 - 2.特殊方法(魔术方法):小写和两个前导下划线,两个后置下划线 - 3.函数参数:小写和下划线,缺省值等号两边无空格 3. 类名称命名: - 类总是使用驼峰格式命名,即所有单词首字母大写其余字母小写. #!/usr/bin/env python # -*- coding:…
1.类的定义 #类的定义 class 类名: 属性='xxx' def __init__(self): self.name='enon' self.age=18 def other_func: pass 在定义类的时候,类内的代码就已经执行了 在定义类时需要在类内定义一个叫__init__的函数,该函数在调用时才会执行 self是位置参数,用于在调用函数时接受传入的第一个参数,该参数为调用此方法的object本身 #类的实例化==>对象 #1. 若类内部没有设置__init__方法,则生成对象时…
一.类: 1. 面向对象. 2. 定义了新的对象类型. 定义了两个属性:name,pay 定义了两个方法:lastName,giveRaise…
一句话说明 __slots__是用来限制实例的属性的,__slots__可以规定实例是否应该有__dict__属性:__slots__不能限制类的属性. 只有__slots__列表内的这些变量名可赋值为实例属性. class A: __slots__=['name'] def __init__(self): self.name='js' self.age=22 a=A() 运行结果: Traceback (most recent call last): File "a.py", lin…
1.成员 类成员 类变量 绑定方法 类方法 静态方法 属性 实例成员(对象) 实例变量 1.1实例变量 类实例化后的对象内部的变量 1.2类变量 类中的变量,写在类的下一级和方法同一级. 访问方法: 类.类变量名称(推荐) 对象.类变量名称 面试题: 总结:找变量优先找自己,自己没有找 类 或 基类:修改或赋值只能在自己的内部设置. class Base: x = 1 obj = Base() print(obj.x) # 先去对象中找,没有再去类中找. obj.y = 123 # 在对象中添加…
type()方法作为元类,用来创建类: type(类名, 父类的元组(针对继承的情况,可以为空),包含属性的字典(名称和值)) 以下代码可以用type()方法来创建: class Myclass(object): pass 用type()的方式创建: Myclass = type('Myclass', (), {}) 如果有继承的情况,例如: class MyClassChild(Myclass): pass 可以这样写: MyClassChild = type('MyClassChild',…
class Dog(object): __instance = None __init_flag = False def __new__(cls, name): if cls.__instance == None: cls.__instance = object.__new__(cls) return cls.__instance else: #返回上一次创建的对象的引用 return cls.__instance def __init__(self,name): if Dog.__init_f…
# 类 Fabric 主机管理程序开发: # 1. 运行程序列出主机组或者主机列表 # 2. 选择指定主机或主机组 # 3. 选择让主机或者主机组执行命令或者向其传输文件(上传/下载) # 4. 充分使用多线程或多进程 # 5. 不同主机的用户名密码.端口可以不同 import paramiko,threading,pickle,os Base_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) config_pa…
四.函数 1.定义函数 (1)定义规则 介绍列表方法的时候已经大概说过函数,学过数学的人都知道函数,给一个参数返回一个值.函数也可以自己定义.用如下的格式: >>>def 函数名(参数): 输入函数代码 函数代码中,return表示返回的值.比如定义一个平方函数square(x),输入参数x,返回x的平方: —————————————— >>> def square(x):return x*x >>> square(9) 81 ————————————…
何为定制类? Python的class允许定义许多特殊方法,可以让我们非常方便地生成特定的类.在类中应用或者重写python的特殊方法,得到的类,就是定制类. 大家都知道print的用法.见下面例子 >>> lst = [2,3,4] >>> print lst [2, 3, 4] >>> class Animal(object): pass >>> a = Animal() >>> print a <__ma…
1.#面向对象 #抽象接口 === 抽象类 #就是架构师给你一个架子,你们去写,如果满足不了直接报错 #python2 print("python2---抽象类".center(20,'#')) import abc #需要在python2中测试,如果直接运行会报错 #因为没有调用send方法 class Alert(object): '''报警基类''' __metaclass__ = abc.ABCMeta @abc.abstractmethod def send(self): #…
方法 绑定方法和非绑定方法 绑定方法和非绑定方法在创建时没有任何区别,同一方法,既可以为绑定方法,也可以为非绑定方法,一切不同都只在调用时的手法上有所区别. 绑定方法即该方法绑定类的一个实例上,必须将self作为第一个参数传入,而这个过程是由Python自动完成.可以通过实例名.方法名(参数列表)来调用. 非绑定方法因为不绑定到实例上,所以在引用时通过类来进行引用.该过程不是 Python 自动完成,如果忘记传入实例,那么直接调用是肯定会出问题的.所以要调用类的非绑定方法时应该显示地提供一个实例…