python类class基础

44、class类:

一、类定义的一般形式:

1、简单的形式:实例化对象没有自己独有的数据属性。

>>> class fistclass():

...     data1 = ‘hello world‘ ### ==>这是类的数据属性或类成员属性。

...     def printdata(self): ###==>这是类的方法,而且这里至少有一个参数self!!!

...             print(‘nihao%s‘ %self.data1)

...

>>> class1 = fistclass() ##==>类实例化

>>> class1.

class1.__class__(         class1.__format__(        class1.__le__(            class1.__reduce_ex__(     class1.__weakref__

class1.__delattr__(       class1.__ge__(            class1.__lt__(            class1.__repr__(          class1.data1

class1.__dict__           class1.__getattribute__(  class1.__module__         class1.__setattr__(       class1.printdata(

class1.__dir__(           class1.__gt__(            class1.__ne__(            class1.__sizeof__(

class1.__doc__            class1.__hash__(          class1.__new__(           class1.__str__(

class1.__eq__(            class1.__init__(          class1.__reduce__(        class1.__subclasshook__(

>>> class1.data1 ##类数据属性调用

‘hello world‘

>>> class1.printdata() ##类的方法的调用

nihaohello world

2、定义对象独有的数据属性:

>>> class seclass():

...     data1 = ‘hello seclass‘

...     def setdata(self,x):

...             self.str1 = x

...     def printdata(self):

...             print(self.str1)

...

>>> ins1 = seclass()

>>> ins1.

ins1.__class__(         ins1.__format__(        ins1.__le__(            ins1.__reduce_ex__(     ins1.__weakref__

ins1.__delattr__(       ins1.__ge__(            ins1.__lt__(            ins1.__repr__(          ins1.data1

ins1.__dict__           ins1.__getattribute__(  ins1.__module__         ins1.__setattr__(       ins1.printdata(

ins1.__dir__(           ins1.__gt__(            ins1.__ne__(            ins1.__sizeof__(        ins1.setdata(

ins1.__doc__            ins1.__hash__(          ins1.__new__(           ins1.__str__(

ins1.__eq__(            ins1.__init__(          ins1.__reduce__(        ins1.__subclasshook__(

>>> ins1.data1

‘hello seclass‘

>>> ins1.setdata(‘abc‘)

>>> ins1.printdata()

abc

>>> ins2 = seclass()

>>> ins2.data1

‘hello seclass‘

>>> ins2.setdata(‘xy‘)

>>> ins2.printdata()

xy

3、__init__()方法:

创建实例时,python会自动调用类中的__init__方法,以隐性的为实例提供属性。

__init__称之为构造器。

如果类中没有定义__init__方法,则实例之初仅仅是创建一个简单的名称空间。

>>> class thirdclass():

...     data3 = ‘hello thirdclass‘

...     def __init__(self,who):

...             self.name = who

...

>>> ins3 = thirdclass(‘lucy‘)

>>> ins3.

ins3.__class__(         ins3.__format__(        ins3.__le__(            ins3.__reduce_ex__(     ins3.__weakref__

ins3.__delattr__(       ins3.__ge__(            ins3.__lt__(            ins3.__repr__(          ins3.data3

ins3.__dict__           ins3.__getattribute__(  ins3.__module__         ins3.__setattr__(       ins3.name

ins3.__dir__(           ins3.__gt__(            ins3.__ne__(            ins3.__sizeof__(

ins3.__doc__            ins3.__hash__(          ins3.__new__(           ins3.__str__(

ins3.__eq__(            ins3.__init__(          ins3.__reduce__(        ins3.__subclasshook__(

>>> ins3.data3

‘hello thirdclass‘

>>> ins3.name

‘lucy‘

4、__dict__:

>>> ins3.__dict__ 实例的属性

{‘name‘: ‘lucy‘}

>>> thirdclass.__dict__ 类的属性。

mappingproxy({‘data3‘: ‘hello thirdclass‘, ‘__init__‘: <function thirdclass.__init__ at 0x7f8e0a440ea0>, ‘__dict__‘: <attribute ‘__dict__‘ of ‘thirdclass‘ objects>, ‘__module__‘: ‘__main__‘, ‘__doc__‘: None, ‘__weakref__‘: <attribute ‘__weakref__‘ of ‘thirdclass‘ objects>})

5、类中的可用变量:

>>> class c1():

...     var1 = ‘hello c1‘ ###==>类的静态变量!!!!

...     def __init__(self,who):

...             self.insdata = who ###==>实例变量。

...             self.name = ‘123‘ ###==>局部变量:只属于这个方法。

...

>>> ins1 = c1(12)

>>> ins1.

ins1.__class__(         ins1.__format__(        ins1.__le__(            ins1.__reduce_ex__(     ins1.__weakref__

ins1.__delattr__(       ins1.__ge__(            ins1.__lt__(            ins1.__repr__(          ins1.insdata

ins1.__dict__           ins1.__getattribute__(  ins1.__module__         ins1.__setattr__(       ins1.name

ins1.__dir__(           ins1.__gt__(            ins1.__ne__(            ins1.__sizeof__(        ins1.var1

ins1.__doc__            ins1.__hash__(          ins1.__new__(           ins1.__str__(

ins1.__eq__(            ins1.__init__(          ins1.__reduce__(        ins1.__subclasshook__(

>>> ins1.name

‘123‘

>>> ins1.var1

‘hello c1‘

>>> ins1.insdata

12

6、类的继承:python允许多重继承,属性搜索方法:从左往右,从下往上。

>>> class PClass(object):

...     gender = ‘male‘

...     def __init__(self,who):

...             self.name = who

...

>>> class CClass(PClass):

...     def displayinfo(self):

...             print(self.gender,self.name)

...

>>> ins1 = CClass(‘lucy‘)

>>> ins1.

ins1.__class__(         ins1.__format__(        ins1.__le__(            ins1.__reduce_ex__(     ins1.__weakref__

ins1.__delattr__(       ins1.__ge__(            ins1.__lt__(            ins1.__repr__(          ins1.displayinfo(

ins1.__dict__           ins1.__getattribute__(  ins1.__module__         ins1.__setattr__(       ins1.gender

ins1.__dir__(           ins1.__gt__(            ins1.__ne__(            ins1.__sizeof__(        ins1.name

ins1.__doc__            ins1.__hash__(          ins1.__new__(           ins1.__str__(

ins1.__eq__(            ins1.__init__(          ins1.__reduce__(        ins1.__subclasshook__(

>>> ins1.gender

‘male‘

>>> ins1.name

‘lucy‘

>>> ins1.displayinfo()

male lucy

时间: 2024-10-24 09:08:45

python类class基础的相关文章

python 类的基础知识

1.创建类 1 class Book(object): 2 def __init__(self,b): #定义构造器 3 self.name=b 4 print self.name 5 def updatename(self,a): 6 self.name=a 7 print self.name 注意: __init__()在实例化时被调用(隐式调用). self参数自动由解释器传递  . 2.创建实例(类的实例化) 1 c=Book('mike') 注意: 创建类实例时,注意传参的个数.例如上

图解Python 【第五篇】:面向对象-类-初级基础篇

由于类的内容比较多,分为类-初级基础篇和类-进阶篇 类的内容总览图: 本节内容一览图: 今天只讲类的基础的面向对象的特性 前言总结介绍: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个"函数"供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数,对象是一个类的实例 实例(instance):一个对象的实例化实现. 标识(identity):每个对象的实例都需要一个可

Python全栈开发记录_第九篇(类的基础_封装_继承_多态)

有点时间没更新博客了,今天就开始学习类了,今天主要是类的基础篇,我们知道面向对象的三大特性,那就是封装,继承和多态.内容参考该博客https://www.cnblogs.com/wupeiqi/p/4493506.html 之前我们写的都是函数,可以说是面向过程的编程,需要啥功能就直接写啥,但是我们在编写程序的过程中会发现如果多个函数有共同的参数或数据时,我们也必须多次重复去写,此时如果用面向对象的编程方式就会好很多,这也是面向对象的适用场景. 面向对象三大特性: 一.封装(顾名思义就是将内容封

【Python&amp;数据结构】 抽象数据类型 Python类机制和异常

这篇是<数据结构与算法Python语言描述>的笔记,但是大头在Python类机制和面向对象编程的说明上面.我也不知道该放什么分类了..总之之前也没怎么认真接触过基于类而不是独立函数的Python编程,借着本次机会仔细学习一下. 抽象数据类型 最开始的计算机语言,关注的都是如何更加有效率地计算,可以说其目的是计算层面的抽象.然而随着这个行业的不断发展,计算机不仅仅用于计算,开发也不仅只关注计算过程了,数据层面的抽象也变得同样重要.虽然计算机语言一开始就有对数据的抽象,但是那些都只是对一些最基本的

第六章 Python类(面向对象编程)

什么是面向对象编程? 面向对象编程(Object Oriented Programming,OOP,面向对象程序设计)是一种计算机编程架构.Python就是这种编程语言. 面向对象程序设计中的概念主要包括:对象.类.继承.动态绑定.封装.多态性.消息传递.方法. 1)对象:类的实体,比如一个人. 2)类:一个共享相同结构和行为的对象的集合.通俗的讲就是分类,比如人是一类,动物是一类. 3)继承:类之间的关系,比如猫狗是一类,他们都有四条腿,狗继承了这个四条腿,拥有了这个属性. 4)动态绑定:在不

LightMysql:为方便操作MySQL而封装的Python类

原文链接:http://www.danfengcao.info/python/2015/12/26/lightweight-python-mysql-class.html mysqldb是Python操作MySQL数据库的一个常用包.但在使用过程中,我认为用起来还不够简便.为此,我在mysqldb的基础上封装了一个Python类LightMysql. 先来看如何使用 example.py #!/usr/bin/env python # -*- coding: utf-8 -*- from Lig

python 类 六:继承自动寻找父类

本系列博客(python 类) 的部分例子来自于 <<python 核心编程 第二版>> 前面我们谈到 python 继承,是可以引用父类的__init__方法的 ,并在此基础上添加子类自己的特殊的属性的设定,形成子类自己的__init__  构造函数. 在这种方法中,必须显示的指出父类的名字. #coding:utf-8 class p(object):     def __init__(self,nm):         self.name  = nm class c(p):

Python学习笔记基础篇——总览

Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列表.字典.主文件判断.对象 Python学习笔记——基础篇1[第三周]——set集合 Python学习笔记——基础篇2[第三周]——计数器.有序字典.元组.单(双)向队列.深浅拷贝.函数.装饰器 Python学习笔记——基础篇[第四周]——迭代器&生成器.装饰器.递归.算法.正则表达式 Python

[转]python与numpy基础

来源于:https://github.com/HanXiaoyang/python-and-numpy-tutorial/blob/master/python-numpy-tutorial.ipynb python与numpy基础 寒小阳(2016年6月) Python介绍 如果你问我没有编程基础,想学习一门语言,我一定会首推给你Python类似伪代码的书写方式,让你能够集中精力去解决问题,而不是花费大量的时间在开发和debug上同时得益于Numpy/Scipy这样的科学计算库,使得其有非常高效