python面向对象编程
文章平均质量分 95
梦寐_
这个作者很懒,什么都没留下…
展开
-
Python学习:面向对象描述符(__get__,__set__,__delete__),装饰器decorate
_ _getattribute_ _#回顾__getattr__class Foo: def __init__(self,x): self.x=x def __getattr__(self, item): print('执行的是我') # return self.__dict__[item]f1=Foo(10)print(...原创 2019-06-22 16:17:36 · 640 阅读 · 0 评论 -
Python 使用 attrs 和 cattrs 实现面向对象编程
Python 是支持面向对象的,很多情况下使用面向对象编程会使得代码更加容易扩展,并且可维护性更高,但是如果你写的多了或者某一对象非常复杂了,其中的一些写法会相当相当繁琐,而且我们会经常碰到对象和 JSON 序列化及反序列化的问题,原生的 Python 转起来还是很费劲的。首先让我们定义一个对象吧,比如颜色。我们常用 RGB 三个原色来表示颜色,R、G、B 分别代表红、绿、蓝三个颜色的数值,范围...转载 2019-11-12 20:36:11 · 5635 阅读 · 1 评论 -
Python学习:属性property
再看property一个静态属性property本质就是实现了get,set,delete三种方法用法一class Foo: @property def AAA(self): print('get的时候运行我啊') @AAA.setter def AAA(self,value): print('set的时候运行我啊') ...原创 2019-06-22 17:22:30 · 147 阅读 · 0 评论 -
Python的hasattr() getattr() setattr() 函数使用方法
def hasattr(*args, **kwargs): # real signature unknown """ Return whether the object has an attribute with the given name. This is done by calling getattr(obj, name) and catching Attr...原创 2019-10-21 22:23:37 · 505 阅读 · 0 评论 -
Python学习:__setitem__,__getitem,__delitem__
__setitem__,__getitem,__delitem__class Foo: def __init__(self,name): self.name=name def __getitem__(self, item): print(self.__dict__[item]) def __setitem__(self, key, va...原创 2019-06-22 17:27:33 · 1395 阅读 · 0 评论 -
python ::__setattr__,__delattr__,__getattr__
通常情况下,我们在访问类或者实例对象的时候,会牵扯到一些属性访问的魔法方法,主要包括:① __getattr__(self, name): 访问不存在的属性时调用② __getattribute__(self, name):访问存在的属性时调用(先调用该方法,查看是否存在该属性,若不存在,接着去调用①)③__setattr__(self, name, value):设置实例对象的一个新的属性...原创 2019-10-21 22:45:34 · 549 阅读 · 1 评论 -
Python学习:__str__,__repr__,__format__
__str__,__repr__,__format__改变对象的字符串显示__str__,__repr__自定制格式化字符串__format__#_*_coding:utf-8_*___author__ = 'Linhaifeng'format_dict={ 'nat':'{obj.name}-{obj.addr}-{obj.type}',#学校名-学校地址-学校类型 ...原创 2019-06-22 17:41:30 · 176 阅读 · 0 评论 -
Python学习:__doc__,`__module__和__class__`
__doc__文档注释class Foo: '我是描述信息' passprint(Foo.__doc__)#打印:我是描述信息class Foo: '我是描述信息' passclass Bar(Foo): passprint(Bar.__doc__) #该属性无法继承给子类#打印:None__module__和__class__...原创 2019-06-23 17:34:48 · 433 阅读 · 0 评论 -
Python学习:__next__和__iter__
__next__和__iter__实现迭代器协议class Foo: def __init__(self,x): self.x=x def __iter__(self): return self def __next__(self): n=self.x self.x+=1 return s...原创 2019-06-23 17:56:39 · 332 阅读 · 0 评论 -
Python: `__slots__`
__slots__‘’’__slots__是什么:是一个类变量,变量值可以是列表,元祖,或者可迭代对象,也可以是一个字符串(意味着所有实例只有一个数据属性)引子:使用点来访问属性本质就是在访问类或者对象的__dict__属性字典(类的字典是共享的,而每个实例的是独立的)为何使用__slots__:字典会占用大量内存,如果你有一个属性很少的类,但是有很多实例,为了节省内存可以使用__slo...原创 2019-09-26 15:35:48 · 221 阅读 · 1 评论 -
python __slots__ 限制属性
Python 是动态语言,允许我们动态的增加属性和方法class Student(object): pass s = Student()s.name = "LiLei"print(s.name)>>> LiLei同样也有办法限制属性的动态绑定class Teacher(object): # 用tuple定义允许绑定的属性名称,但是此限...原创 2019-09-15 21:35:48 · 122 阅读 · 0 评论 -
类属性
给实例绑定属性的方法是通过实例变量,或者通过self变量:class Student(object): def __init__(self, name): self.name = names = Student('Bob')s.score = 90但是,如果Student类本身需要绑定一个属性呢?可以直接在class中定义属性,这种属性是类属性,归Student...原创 2019-09-15 21:20:17 · 135 阅读 · 0 评论 -
Python学习:isinstance和issubclass
一 isinstance(obj,cls)和issubclass(sub,super)isinstance(obj,cls)检查是否obj是否是类 cls 的对象 class Foo(object): pass obj = Foo() isinstance(obj, Foo)issubclass(sub, super)检查sub类是否是 super 类的派生类 ...原创 2019-06-21 21:24:44 · 151 阅读 · 0 评论 -
Python:面向对象编程
面向对象编程中,将函数和变量进一步封装成类,类才是程序的基本元素,它将数据和操作紧密地连结在一起,并保护数据不会被外界的函数意外地改变。类和和类的实例(也称对象)是面向对象的核心概念import sysimport timereload(sys)sys.setdefaultencoding('utf-8')class studetn: # 定义一个类名为studetn ...原创 2019-09-26 14:14:56 · 118 阅读 · 0 评论 -
Python学习:面向对象之绑定方法与非绑定方法
类中定义的函数分成两大类一:绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入): 1. 绑定到类的方法:用classmethod装饰器装饰的方法。为类量身定制类.boud_method(),自动将类当作第一个参数传入(其实对象也可调用,但仍将类当作第一个参数传入) 2. 绑定到对象的方法:没有被任何装饰器装饰的方法。为对象量身定制对象.boud_method...原创 2019-06-28 23:06:39 · 156 阅读 · 0 评论 -
Python学习:类
面向对象编程是最有效的软件编写方法之一。在面向对象编程中,你编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。基于类创建对象时,每个对象都自动具备这种通用行为,然后可根据需要赋予每个对象独特的个性。根据类来创建对象被称为实例化,这让你能够使用类的实例。文章目录创建和使用类使用类和实例继承创建和使用类创建 Dog 类class Dog(): """一次模拟小狗的简单尝...原创 2019-06-13 15:18:06 · 227 阅读 · 0 评论 -
Python学习:类属性的操作
一、类的属性类属性又称为静态属性。这些数据是与他们所属的类对象绑定的,不依赖于任何类实例。类有两种属性:数据属性和函数属性类的数据属性是所有对象共享的类的函数属性是绑定给对象用的class Chinese: country = 'China' def __init__(self,name): self.name = name def play...原创 2019-06-20 22:14:39 · 197 阅读 · 0 评论 -
Python学习:面向对象之继承与派生
什么是继承继承是一种创建新类的方式,新建的类可以继承一个或多个父类(python支持多继承),父类又可称为基类或超类,新建的类称为派生类或子类。子类会“”遗传”父类的属性,从而解决代码重用问题(比如练习7中Garen与Riven类有很多冗余的代码)python中类的继承分为:单继承和多继承class ParentClass1: #定义父类 passclass ParentCla...原创 2019-06-20 23:13:13 · 175 阅读 · 0 评论 -
Python学习:Python学习:面向对象编程--实例方法、类方法和静态方法
装饰器:@staticmethod # 静态方法@classmethod # 类方法@property # 属性方法实例方法Python 的实例方法用得最多,也最常见。class Test(object): def __init__(self, data): self.data = data def printd(self): ...原创 2019-06-21 11:10:25 · 214 阅读 · 0 评论 -
Python学习:面向对象编程--组合
组合: 就是将不同的类混合并加入到其他类中,来 增加类的功能 / 提高代码的重用性 / 易于维护(对类的修改会直接反应到整个应用中)class School: def __init__(self,name,addr): self.name=name self.addr=addr def zhao_sheng(self): prin...原创 2019-06-21 11:22:09 · 122 阅读 · 0 评论 -
Python学习:Python 子类继承父类构造函数说明
如果在子类中需要父类的构造方法就需要显式地调用父类的构造方法,或者不重写父类的构造方法。子类不重写 init,实例化子类时,会自动调用父类定义的 init。class Father(object): def __init__(self, name): self.name=name print ( "name: %s" %( self.name) ) ...原创 2019-06-21 16:03:53 · 444 阅读 · 0 评论 -
Python学习:面向对象之多态、多态性
多态多态指的是一类事物有多种形态import abcclass Animal(metaclass=abc.ABCMeta): #同一类事物:动物 @abc.abstractmethod def talk(self): passclass People(Animal): #动物的形态之一:人 def talk(self): print...原创 2019-06-21 16:59:11 · 234 阅读 · 0 评论 -
Python学习:面向对象之封装
在程序设计中,封装(Encapsulation)是对具体对象的一种抽象,即将某些部分隐藏起来,在程序外部看不到,其含义是其他程序无法调用。 要了解封装,离不开“私有化”,就是将类或者是函数中的某些属性限制在某个区域之内,外部无法调用。为什么要封装封装数据的主要原因是:保护隐私(把不想别人知道的东西封装起来) 封装方法的主要原因是:隔离复杂度(比如:电视机,我们看见的就是一个黑匣子,其实...原创 2019-06-21 17:15:15 · 158 阅读 · 0 评论 -
Python学习:绑定方法与非绑定方法
类中定义的函数分成两大类一:绑定方法(绑定给谁,谁来调用就自动将它本身当作第一个参数传入):1. 绑定到类的方法:用classmethod装饰器装饰的方法。 为类量身定制 类.boud_method(),自动将类当作第一个参数传入 (其实对象也可调用,但仍将类当作第一个参数传入)2. 绑定到对象的方法:没有被任何装饰器...原创 2019-06-21 20:39:24 · 389 阅读 · 0 评论 -
Python学习:面向对象编程
类与对象类即类别、种类,是面向对象设计最重要的概念,对象是特征与技能的结合体,而类则是一系列对象相似的特征与技能的结合体。在程序中:务必保证先定义类,后产生对象。#在程序中,务必保证:先定义(类),后使用(产生对象)PS:在程序中特征用变量标识,技能用函数标识因而类中最常见的无非是:变量和函数的定义#程序中的类class OldboyStudent: school='o...原创 2019-06-20 16:05:09 · 139 阅读 · 0 评论