# -*- coding: utf-8 -*- #python 27 #xiaodeng #http://www.imooc.com/code/6252 #类的专有方法(__getitem__和__setitem__) #__getitem__,返回给定键对应的值 #__setitem__,设置给定键对应的元素 class Test(): kk={} def __getitem__(self,key): return self.kk[key] def __setitem__(self,key,v…
1.__init__ : 构造函数,在生成对象时调用  该方法是在对象产生之后才会执行,只用来为对象进行初始化操作,可以有任意代码,但不一定有返回值. 所谓初始化构造函数就是在构造对象的同时被对象自动调用,完成对事物的初始化,一个类只要生成一个类对象,它一定会调用初始化构造函数. 特点: >一个类中只能有一个初始化构造函数 >不能有返回值 >可以用它来为每个实例定制自己的特征 class Chinese: country = 'china' def __init__(self,name,…
陆陆续续总结一些用到的类的特殊方法 看源码总会看到一些奇奇怪怪的写法: 掺杂着设计模式 https://coding.net/u/RuoYun/p/Python-design-pattern/git/tree/master https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014319098638265527beb24f7840aa97de564ccc7f20f6000 类的专…
# -*- coding: utf-8 -*- #python 27 #xiaodeng #http://www.360doc.com/content/15/0413/19/12067640_462966543.shtml #类的专有方法(__getattr__和__setattr__.__delattr__) #__setattr__:通过该方法,给对象添加或修改指定的属性 class Test(): def __init__(self,name,age): self.name=name se…
# -*- coding: utf-8 -*- #python 27 #xiaodeng #http://www.imooc.com/code/6252 #类的专有方法(__len__) #如果一个类表现得像一个list,要获得有多少个元素,就得用len():要让len()函数正常工作,类必须提供一个特殊的方法__len__(),才能返回元素的个数 #案例01 class Fib(): def __init__(self, num): a, b, L = 0, 1, [] for i in ra…
# -*- coding: utf-8 -*- #python 27 #xiaodeng #http://blog.csdn.net/yyt8yyt8/article/details/7030416 #http://zhidao.baidu.com/link?url=zdkLDmHXmSqFlGp7uBWr3HMFq2Wq8Eg6bd-Rm0pjLIGXviEBr5Li8z7avS-uXK_z_YJ1hBPIhB63PqAKH40NZX_-u-c7rJB1B4Cyd4u3PH3 #http://…
# -*- coding: utf-8 -*- #python 27 #xiaodeng #http://www.bubuko.com/infodetail-313791.html #类的专有方法(__del__) 'PS:析构函数只需要明白其用途,目前无需深入学习' #__init__ #作用:当一个类实例删除时被调用 #析构函数与构造函数相反,当对象脱离其作用域时(对象所在的函数已调用完毕),系统自动执行析构函数.析构函数往往用来做清理善后的工作:开辟了一个内存空间之后,利用完毕了要释放内存…
# -*- coding: utf-8 -*- #python 27 #xiaodeng #http://www.cnblogs.com/zyxstar2003/archive/2011/03/21/1989954.html #类的专有方法(__init__) #__init__,类似于构造函数 #作用:初始化已实例化后的对象;初始化对象,在创建新对象时调用 class Student(object): def __init__(self,name='xiaodeng'):#默认参数 self.…
相关内容: __del__.__doc__.__dict__.__module__.__getitem__.__setitem__.__delitem__.__str__.__repr__.__call__ 首发:posted @ 2018-02-07 01:08 修改: 2018-02-14 13:57:增加__repr__ __del__: 被称为析构函数 当删除一个对象时,python解释器会默认调用__del__()方法 import gc class Dog(object): def…
类属性与方法 类的私有属性 __private_attrs: 两个下划线开头,表明为私有,外部不可用,内部使用时self.__private_attrs. 类的方法 在类的内部,使用 def 关键字来定义一个方法,类方法必须包含参数 self,且为第一个参数.self的名称也可自己取,如使用this,但是建议还是用self为好. 类的私有方法 __private_method: 两个下划线开头,为私有方法,只能在类的内部调用 ,不能在类的外部调用.self.__private_methods.…
主要讲类的内部方法 __setattr__  __getattr_  __delattr__  hasattr  __getattribute__  __getitem__(),__setitem__(), __delitem__() 主程序如下: class Foo: def _inif(self,pname): self.pname = pname def func(): print('i'm func') def __getattr__(self, item): print('提示:属性[…
特殊函数一般以__methodname__的形式命名,如:__init__(构造方法), __getitem__. __setitem__(subscriptable所需method), __delitem__(del obj[key]所需method), __len__(len(-)所需method)等: 以下以什么都不做的Something类,结合lambda表达式,来说明这些特殊函数: >>> class Something: ... pass ... >>> s…
一.面向对象之多态 1.多态:简而言子就是多种形态或多种类型 python中不支持多态也用不到多态,多态的概念是应用与java/C#中指定传参的数据类型, java多态传参:必须是传参数的数据类型或传参的子类类型 面向对象总结: 面向对象是一种编程方式,此编程方式的实现是基于类和对象的使用 类:是一个模板,模板中包含了多个函数共使用,即类中可包含多个函数(类中的函数即叫做方法) 一般疑问: 1)什么样的代码才是面向对象? 简单来说,如果程序中的所有功能否是由 “类”和“对象”实现,那么就是面向对…
Python中类的魔术方法 在Python中以两个下划线开头的方法,__init__.__str__.__doc__.__new__等,被称为"魔术方法"(Magic methods).魔术方法在类或对象的某些事件出发后会自动执行,如果希望根据自己的程序定制自己特殊功能的类,那么就需要对这些方法进行重写. 注意:Python 将所有以 __(两个下划线)开头的类方法保留为魔术方法.所以在定义类方法时,除了上述魔术方法,建议不要以 __ 为前缀. Python提供的魔术方法 魔术方法这里…
python类中有一些方法前后都有两个下划线,这类函数统称为魔术方法.这些方法有特殊的用途,有的不需要我们自己定义,有的则通过一些简单的定义可以实现比较神奇的功能 我主要把它们分为三个部分,下文也是分为这三个部分来讲解的 简单,功能性,一般不修改直接调用查看结果 实现简单功能,定义后使用 实现比较复杂功能,常常是一些我们常见类的特性的实现原理,具体分为 实例成为可迭代对象(列表的特性) 实例索引取值(列表的特性) 上下文管理(文件的特性)等 简单功能 这部分包括上面列出的前两个点 不需要修改直接…
一.跟实例创建和执行有关的 __new__.__init__.__call__. 类加括号调用了__init__方法来创建一个实例对象.这一过程分成了两步: 类调用__new__来创建实例对象,__new__调用__init__来初始化实例对象. class A: count = 0 def __init__(self): print("__init__ has called. 2") def __new__(cls): print("__new__ has called.…
python之 __getattr__.__getattr__.__getitem__.__setitem__ 使用 __getattr__内置使用点号获取实例属性属性如 s.name,自调用__getattr__ __setattr__设置类实例属性 如s.name='tom',自调用__setattr__ __getitem__ 使用[]获取实例属性 如s['name'],自调用__getitem__ __setitem__ 使用[]设置实例属性如 s['name'] = 'tom' ,自调…
一.魔法方法特点 被双上下滑线包围 魔法方法是面向对象的Python的一切,如果你不知道魔法方法,说明你还没能意识到面向对象的Python的强大(不是说Python脚本) 通过对制定方法的重写,完全可以让python根据个人的用途去实现! 二.魔法方法 http://bbs.fishc.com/forum.php?mod=viewthread&tid=48793&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403 1.构造相关 __init__(…
一.定制序列(容器类型) http://bbs.fishc.com/forum.php?mod=viewthread&tid=48793&extra=page%3D1%26filter%3Dtypeid%26typeid%3D403:容器类型 协议(Protocols)与其他编程语言中的接口很相似,它规定你哪些方法必须要定义.然而,在Python中的协议就显得不那么正式.事实上,在Python中,协议更像是一种指南. 定制容器的协议 如果你希望定制的容器是不可变的话,你只需要定义__len…
目录 python day 11 1. 类的补充 1.1 通过反射来查找类,创建对象,设置对象的属性与方法 1.2 类的魔法方法:getitem,setitem 1.3 元类__metaclass__ 23. exception异常的处理 23.1 引入异常 23.2 try-except-else-finally 23.3 异常的传递过程 23.4 自定义异常 python day 11 2019/10/14 学习资料来自老男孩与尚学堂 1. 类的补充 1.1 通过反射来查找类,创建对象,设置…
一.类的属性 1.@property属性 作用就是通过@property把一个方法变成一个静态属性 class Room: def __init__(self,name,length,width,height): self.name=name self.length=length self.width=width self.height=height @property def cal_area(self): return self.length*self.width r1=Room("room…
class Rgc(object): def __new__(cls, *args, **kwargs): print('在类通过__new__方法实例化一个对象') return super(Rgc, cls).__new__(cls) def __init__(self, name, gender): """ Usage: >>> Rgc('rg','man') :param name: :param gender: """…
开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以,跟着本篇的步伐,继续来围观. /* 新语法索引 */ 1.自动属性 Auto-Implemented Properties 2.隐式类型 var 3.参数默认值 和 命名参数 4.对象初始化器 与 集合初始化器 { } 5.匿名类 & 匿名方法 6.扩展方法 7.系统内置委托 Func / Acti…
1.如何定义java的方法 什么是方法:方法使用来解决一类问题的代码集合,是一个功能模块在类中定义个方法的方法是: 访问修饰符 返回值类型 方法名(参数列表){ 方法体 } 1.访问修饰符,是限制该方法允许被访问的权限范围,可以是:public,protected,private还可以省略2.返回值,如果有返回值需要在这里说明类型,并用return返回,如果没有返回值,使用void3.方法名,使用标识符命名4.参数列表,传递给方法的参数列表 根据返回值和参数的不同,方法大致上分为一下四类:Ø 无…
Python 类属性与方法 标签(空格分隔): Python Python的访问限制 Python支持面向对象,其对属性的权限控制通过属性名来实现,如果一个属性有双下划线开头(__),该属性就无法被外部访问. class Person: def __init__(self, name, age, sex): self.name = name self._age = age self.__sex = sex def out_name(self): print self.name def _out_…
本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 前面我们学习了如何在JNI中通过参数来使用Java中的普通变量,下面我们来学习如何在JNI中使用Java类的普通方法与成员变量:Java中类有两个区域:每个类的实例的私有区域和所有实例共享的类的静态区域,JNI也提供了相应的方法来操作这两个区域中的方法与变量.首先以一个简单例子来说明如何在JNI中操作类实例的私有区域: 1 变量的操作 1.1 类实例的…
22.编写一个类A,该类创建的对象可以调用方法showA输出小写的英文字母表.然后再编写一个A类的子类B,子类B创建的对象不仅可以调用方法showA输出小写的英文字母表,而且可以调用子类新增的方法showB输出大写的英文字母表.最后编写主类C,在主类的main方法 中测试类A与类B. package jicheng; public class A { public void showA() { System.out.println("asdfsdf"); } } package jic…
Java的cmd配置(也即Java的JDK配置及相关常用命令) ——找不到或无法加载主类  的解决方法 这段时间一直纠结于cmd下Java无法编译运行的问题.主要问题描述如下: javac 命令可以正常运行,而java命令有时可以正常运行,有时却不可以,不可以的症状就是显示“找不到或无法加载主类”. 在网上找了各种资料,最终发现是因为代码里含有package语句,所以无法在cmd下运行java命令解释.class文件.而那些可以运行的文件就是因为没有使用package语句. 我这种问题的解决方法…
在以前,如果我们想要调用一个类中的方法,只能这样子: 例: 有Cat和Dog两个类,里面有eat和run两个成员方法: public class Dog { public void eat() { System.out.println("狗吃肉"); } public void run() { System.out.println("狗刨"); } } public class Cat { public void eat() { System.out.println…
Python的高级特性1-7系列是本人从Python2过渡3时写下的一些个人见解(不敢说一定对),接下来的系列主要会以类级为主. 类,对象,实例,方法是几个面向对象的几个基本概念,其实我觉得很多人并不是真正了解这一块. 举个例子进行测试一下: In [19]: class A(): ....: pass ....: In [20]: a = A In [21]: type(a) Out[21]: classobj In [22]: class B(object): ....: pass ....…