python的类
一、语法
python类的机制是 C++ 的类机制和 Modula-3 的类机制的混合体:
允许多继承的类继承机制,派生类可以重写它父类的任何方法,一个方法可以调用父类中重名的方法;
1.动态特性: 类可以被动态创建, 并且可以在创建之后被修改;
2.类的成员 (包括数据成员) 通常都是 public的 (例外见下私有变量 (page 95)), 并且所有的成员函数都是 virtual 的;
3.Python 中没有关联对象成员和方法的隐式表达: 所有方法函数在声明时显式地将第一个参数表示为对象, 这个参数的值在方法被调用时隐式赋值;
4.Python 类本身就是对象. 这就提供了导入和重命名的语义;
5.与 C++ 和 Modula-3 不同的是, Python 的内置类型可以被当做基类来让使用者扩展;
6.另外, 像 C++ 一样, 大多数有特殊语法的内置操作符 (算数运算符, 下标操作符等等) 在类的实例中都可以重定义;
二、对象的别名
由于在实现的时候传递的是指针, 所以传递一个对象的开销很小;
三、命名空间
1.可以利用keyword: del 语句来删除可写属性.
例如, del modname.the_answer 将从名为 modname 的模块中移除属性 the_answer.
2. import 语句, 和函数定义都将模块或函数绑定到了当前作用域.
四、类对象&实例对象

那么, MyClass.i 和 MyClass.f 就是合法的属性引用, 分别返回一个整数和一个函数对象.
类属性也可以被指定, 所以你可以给 MyClass.i 赋值以改变其数值.
实例化:(实例对象)
x = MyClass();
1.构造方法:
def __init__(self):
2.方法对象&函数对象:
x.f 是一个 method object,
MyClass.f 是 一个function object.
x.f() 是严格等价于MyClass.f(x)
五、继承
1.派生类定义
BaseClassName 的定义对于派生类是可见的
class DerivedClassName(BaseClassName):
基类定义在另一个模块
class DerivedClassName(modname.BaseClassName):

2.多重继承
python支持多重继承
class DerivedClassName(Base1, Base2, Base3):
六、私有变量
以一个下划线带头的名字 (如 _spam) 应该作为非公共的 API (不管是函数, 方法或者数据成员).
七、空的类定义
一段 Python 代码中如果希望一个抽象的数据类型, 那么可以通过传递
一个类给那个方法, 就好像有了那个数据类型一样.

八、迭代器
定义一个 __iter__() 方法用以返回一个具有 __next__() 的对象. 如
果这个类定义了 __next__() , 那么 __iter__() 仅需要返回 self:


python的类的更多相关文章
- Python笔记——类定义
Python笔记——类定义 一.类定义: class <类名>: <语句> 类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性 如果直接使用类名修改其属 ...
- 【python】类中的self
在python的类中,经常会写self,代表对象自己.如下例: #coding=utf-8 class Foo: def __init__(self, name): self.name = name ...
- python基础——类和实例
python基础——类和实例 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都 ...
- python(6)-类
面向对象编程是一种编程方式,此编程方式的落地需要使用 "类" 和 "对象" 来实现,所以,面向对象编程其实就是对 "类" 和 "对 ...
- 从C#到Python —— 4 类及面向对象
http://www.cnblogs.com/yanxy/archive/2010/04/04/c2p_4.html 如果你熟悉C#,那么对类(Class)和面向对象(Object Oriented) ...
- Python type类具体的三大分类:metaclasses,classes,instance
Python type类视角中的对象体系需要我们不断的学习,其中我们使用的时候需要注意.下面我们就看看如何才能更好的运用Python type类.下面的文章希望大家有所收获. 在单纯的Python t ...
- python元类分析
刚開始接触到Python新式类中的元类的概念的时候非常是纠结了下..不知道这是个啥东西... 用下面几个定义来说明吧: (1)Python中,类也是对象..仅仅只是这样的对象比較的特殊,他用于创建别的 ...
- Python用类实现串以及对串的方法进行单元测试
串是一种常见的数据结构,这里使用Python定义类来实现相应的方法.先看代码,再对相关知识进行讲解. # coding=utf-8 __all__=['ADTString'] class ADTStr ...
- Python基础-类
Python基础-类 @(Python)[python, python基础] 写在前面 如非特别说明,下文均基于Python3 摘要 本文重点讲述如何创建和使用Python类,绑定方法与非绑定方法的区 ...
- 谨慎修改Python的类属性
Python的类和类实例都是可变对象,可以随时给属性赋值,并且在原处修改. 在对类属性进行修改时需要特别小心,因为所有的类实例都继承共享类属性,除非实例本身存在和类属性同名的属性.对类属性进行修改,会 ...
随机推荐
- 《TensorFlow实战》读书笔记(完结)
1 TensorFlow基础 ---1.1TensorFlow概要 TensorFlow使用数据流图进行计算,一次编写,各处运行. ---1.2 TensorFlow编程模型简介 TensorFlow ...
- 升级 macOS Mojave 后部分软件 (如 VS Code) 字体变虚的解决方法
目前有些朋友的设备可能还是“非 Retina” 显示器,那这样如果升级到 Mojave 后你会发现文字不清晰了,这是因为 Mojave 默认关闭了文字次像素渲染字体,你需要在终端里执行: defaul ...
- Linux下Bind error: Address already in use处理
发生这种问题是由于端口被程序绑定而没有释放造成. 可以使用netstat -lp查询当前处于连接的程序以及对应的进程信息. 如果只想查看指定端口,可以输入netstat -lp | grep 9877 ...
- MySQL性能优化方法一:缓存参数优化
原文链接:http://isky000.com/database/mysql-perfornamce-tuning-cache-parameter 数据库属于 IO 密集型的应用程序,其主要职责就是数 ...
- tensorflow中常用学习率更新策略
神经网络训练过程中,根据每batch训练数据前向传播的结果,计算损失函数,再由损失函数根据梯度下降法更新每一个网络参数,在参数更新过程中使用到一个学习率(learning rate),用来定义每次参数 ...
- 【OpenCV】Learn OpenCV
learn opencv website: https://www.learnopencv.com/ learn opencv github:https://github.com/spmallick/ ...
- 【机器学习算法】bagging算法
参考 1.AdaBoost从原理到实现: 完
- mysql 常用linux命令
★ 数据导出命令 D:\Program Files\MySQL\MySQL Server 5.6.39\bin 导出: mysqldump -u root -p cela_sub > D:/d ...
- Linux的getrlimit与setrlimit系统调用
转自:http://www.cnblogs.com/niocai/archive/2012/04/01/2428128.html 功能描述:获取或设定资源使用限制.每种资源都有相关的软硬限制,软限制是 ...
- Start Developing iOS Apps (Swift) 开始开发iOS应用(Swift)
http://www.cnblogs.com/tianjian/category/704953.html 构建基础的用户界面 Build a Basic UI http://www.cnblogs.c ...