python类

Python中的类方法、实例方法、静态方法

非 Y 不嫁゛ 提交于 2020-04-08 12:24:45
类方法 @classmethod 在python中使用较少,类方法传入的第一个参数是 cls,是类本身; 类方法可以通过类直接调用或者通过实例直接调用,但无论哪种调用方式,最左侧传入的参数一定是类本身。 通常情况下,类方法使用 @classmethod 装饰器来声明 实例方法 实例方法需要将类实例化后调用,如果使用类直接调用实例方法,需要显式的将实例作为参数传入;使用实例调用则不需要。 最左侧传入的参数 self,是实例本身。 静态方法 @staticmethod 指类中无需实例参与即可调用的方法(不需要 self 参数),在调用过程中个,无需将类实例化,直接在类之后使用“.”运算符调用。 通常情况下,静态方法使用 @staticmethod 装饰器来声明。 未完待续... 来源: https://www.cnblogs.com/0820LL/p/9983118.html

Python面向对象(类之间的关系)(三)

落花浮王杯 提交于 2020-03-24 19:44:44
类与类之间的关系 在我们的世界中事物和事物之间总会有一些联系. 在面向对象中. 类和类之间也可以产生相关的关系 1. 依赖关系 执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻的. 随时可以更换另外一个东西来完成此操作 class Plant: def __init__(self,zhonglei,xue,gongjili): self.zhonglei = zhonglei self.xue = xue self.gongjili = gongjili def da(self,js): print("植物打僵尸") js.xue -= self.gongjili if js.xue <= 0: print("僵尸死亡") else: print(f"僵尸掉血{self.gongjili},僵尸还剩{js.xue}血") class Jiang: def __init__(self,zhonglei,xue,gongjili): self.zhonglei = zhonglei self.xue = xue self.gongjili = gongjili def chi(self,zw): print("僵尸咬植物") zw.xue -= self.gongjili if zw.xue <= 0: print("植物死亡") else: print(f

Python 类与类之间的关系

旧城冷巷雨未停 提交于 2020-03-24 19:38:32
类与类之间的关系 ​   在我们的世界中事物和事物之间总会有一些联系. ​ 在面向对象中. 类和类之间也可以产生相关的关系 1. 依赖关系 执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻的. 随时可以更换另外一个东西来完成此操作  2. 关联关系     在对象里面埋对象     1. 一对一关系     你和你的女朋友     2. 一对多关系     一个学校. 一堆老师 类中的关系: 依赖关系是最轻的. 最重的是继承关系. 关联关系是比较微妙的.     self到底是谁 ?? self:谁调用的就是谁. 类型是根据调用方的对象来进行变换的 特殊成员:   __init__() # 创建对象的时候初始化操作   __call__() # 对象()   __getitem__() # 对象[哈哈]   __setitem__() # 对象[哈哈] = 值   __new__() # 创建对象的时候.开辟内存   __enter__() # with 对象   __exit__() #结束with的时候   __hash__() # 可哈希 hash()   __class__() #表示当前操作的对象的类是什么   __str__() #print对象的时候显示的内容    来源: https://www.cnblogs.com/zhaoyubing

python中静态方法、类方法、属性方法区别

ぐ巨炮叔叔 提交于 2020-03-22 08:28:44
在python中,静态方法、类方法、属性方法,刚接触对于它们之间的区别确实让人疑惑。 类方法(@classmethod) 是一个函数修饰符,表是该函数是一个类方法 类方法第一个参数是cls,而实例方法第一个参数是self(表示该类的一个实例) 类中普通函数至少要一个self参数,代表类对象实例 类方法至少需要一个cls参数,通过cls可以获取到类本身的属性方法等元信息。当有个子类继承时,传入的是子类对象。 对于类方法两种调用方式,类.func(),类实例.func() 静态方法(@staticmethod) 静态方法是不需要类(cls)和类实例(self)参数的。所以它的使用场景是:和类有关系的功能但在运行时又不需要实例和类参与的情况下需要用到静态方法。比如封装一个工具类,一般情况下都可以采用静态方法形式。 静态方法的优点: 代码可读性好:看到该标签就知道这个方法并不需要依赖对象本身的状态。 节省内存空间,既然是与类实例无关自然就不用创建类实例对象。 属性方法(@property) 添加@property标签,表示将一个普通函数变成一个类属性,只读的 https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000

Python类的静态属性、类方法、静态方法

本小妞迷上赌 提交于 2020-03-19 19:09:18
1、静态属性。@property。作用就是把类的函数属性,封装成类似数据属性。 class Student(object): school='szu' @property def printmassage(self): print('aaaa') s1=Student() s1.printmassage #aaaa 2、类方法:是类对象所拥有的方法,需要用修饰器 @classmethod 来标识其为类方法,对于类方法,第一个参数必须是类对象,一般以 cls 作为第一个参数,能够通过实例对象和类对象去访问。 类方法一般有两个作用:一是访问类属性。二是修改类属性 class Student(object): school='szu' @classmethod def printmassage(cls): print(cls.school) s1=Student() Student.printmassage() #szu s1.printmassage() #szu 3、静态方法:静态方法实际上是独立的,依靠在类中,但实际是只是调取关系。只是名义上归类管理,实际上就是一个工具包,可以供类和实例调用。静态方法里不能直接调用类方法,要调用必须加上类名字去调用。 class Student(object): school='szu' @staticmethod def printmassage

Python类中的魔法方法之 __getitem__ 和 __getattr__

↘锁芯ラ 提交于 2020-03-16 18:31:57
1、 getitem 方法 使用这个方法最大的印象就是调用对象的属性可以像字典取值一样使用 中括号['key'] 使用中括号对对象中的属性进行取值、赋值或者删除时,会自动触发对应的 __getitem__、__setitem__、__delitem__ 方法 代码如下: class Foo(object): def __init__(self): self.name = 'jack' def __getitem__(self,item): if item in self.__dict__: # item = key,判断该key是否存在对象的 __dict__ 里, return self.__dict__[item] # 返回该对象 __dict__ 里key对应的value def __setitem__(self, key, value): self.__dict__[key] = value # 在对象 __dict__ 为指定的key设置value def __delitem__(self, key): del self.__dict__[key] # 在对象 __dict__ 里删除指定的key f1 = Foo() print(f1['name']) # jack f1['age'] =10 print(f1['age']) # 10 del f1['name']

python object类

只愿长相守 提交于 2020-03-12 08:15:40
object是python的默认类,有很多的方法,python中默认的list,str,dict等等都是继承了object类的方法 继承了object的类属于新式类 ,没有继承属于经典类 在python3种默认都是新式类,也即是所有的自定义类,基类都会继承object类 在python3.x的所有类都是object的子类,所以对于一些内置的方法会写在object类中,如果子类不定义,在调用的时候最终会调用object类中的方法,就不会让程序出现不必要的错误了,__init__方法就是其中的一个例子; 所有继承了object类的类 ---- 新式类 在python2中 不继承object类的都是 经典类 class A ( object ) : pass # 新式类 class A : pass # 经典类 :在多继承中遵循深度优先 # 经典类中没有super和mro方法 所有的py3中 的类都继承object 是新式类,在继承中 遵循 广度优先的 C3算法,也可以使用mro来查看继承顺序,super这个方法 可以帮助我们查找到mro顺序中的下一个类 来源: CSDN 作者: 伶优 链接: https://blog.csdn.net/ilufam1314/article/details/104802556

Python类

江枫思渺然 提交于 2020-03-11 08:20:01
一、面向对象编程 面向对象--Object Oriented Programming,简称oop,是一种程序设计思想。在说面向对象之前,先说一下什么是编程范式,编程范式你按照什么方式来去编程,去实现一个功能。举个例子,你要做饭,可以用电磁炉,也可以用煤气灶。不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路,两种最重要的编程范式分别是面向过程编程和面向对象编程。 提到面向对象,就不得不提到另一种编程思想,面向过程;什么是面向过程呢,面向过程的思想是把一个项目、一件事情按照一定的顺序,从头到尾一步一步地做下去,先做什么,后做什么,一直到结束。这种思想比较好理解,其实这也是一个人做事的方法,我们之前编程的思想也都是使用这种思想。这种编程思想,只要前面有一个步骤变了,那么后面的就也要变,后面维护起来比较麻烦,这样的编程思想,我们在写一些简单的小程序、只执行一次的脚本时可以使用。而面向对象呢,面向对象的思想是把一个项目、一件事情分成更小的项目,或者说分成一个个更小的部分,每一部分负责什么方面的功能,最后再由这些部分组合而成为一个整体。这种思想比较适合多人的分工合作,就像一个大的机关,分各个部门,每个部门分别负责某样职能,各个部门可以充分发挥自己的特色,只要符合一定前提就行了。 举个例子:比如刚才说的一个大的机关,要做某一个项目,从面向过程的思想来说,应该是这样分析的

python 2 类与对象

▼魔方 西西 提交于 2020-03-09 04:18:06
1、类与对象的概念 类即类别、种类,是面向对象设计最重要的概念,从一小节我们得知对象是特征与技能的结合体,而类则是一系列对象相似的特征与技能的结合体。 那么问题来了,先有的一个个具体存在的对象(比如一个具体存在的人),还是先有的人类这个概念,这个问题需要分两种情况去看 (1)在现实世界中:肯定是先有对象,再有类 世界上肯定是先出现各种各样的实际存在的物体,然后随着人类文明的发展,人类站在不同的角度总结出了不同的种类,比如 人类、动物类、植物类等概念。也就说,对象是具体的存在,而类仅仅只是一个概念,并不真实存在,比如你无法告诉我人类 具体指的是哪一个人。 (2)在程序中:务必保证先定义类,后产生对象 这与函数的使用是类似的:先定义函数,后调用函数,类也是一样的 :在程序中需要先定义类,后调用类 。不一样的是:调用 函数会执行函数体代码返回的是函数体执行的结果,而 调用类会产生对象,返回的是对象 1>把一类事物的静态属性和动态可以执行的操作组合在一起所得到的这个概念就是类 2>类的一个个体就是对象,对象是具体的,实实在在的事物 3>对象是特征与技能的结合体,其中特征和技能分别对应对象的数据属性和方法属性 4>对象(实例)本身只有数据属性,但是python的class机制会将类的函数绑定到对象上,称为对象的方法,或者叫绑定方法,绑定方法唯一绑定一个对象,同一个类的方法绑定到不同的对象上

Python学习笔记--类class

我是研究僧i 提交于 2020-03-08 20:22:50
面向对象最重要的概念就是类(Class)和实例(Instance),类是抽象的模板,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。下面的实例代码说明了类的一些基本的知识点。 1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Date : 2020-03-08 4 # @Author : Flyinghappy (671474@qq.com) 5 # @Link : https://www.cnblogs.com/flyinghappy/ 6 # @Version : $Id$ 7 import json 8 import os 9 10 class Person: 11 '''类里面定义的函数,第一个参数默认是self''' 12 num=0#类属性 13 def __init__(self,name='',age=20):#特殊方法,在创建类实例的时候把name,age等属性绑定到实例。 14 self.__name=name#类实例变量,前面'__'双下划线限制外部访问 15 self.age=age#类实例变量 16 self.talking_note=[]#类实例变量 17 def talk(self,talk_something):#类方法 18 self