python中什么叫类?

可以视为种类或者类型的同义词。所有的对象都属于某一个类,称为类的实例。

例如:鸟就是"鸟类"的实例。这就是一个有很多子类的一般(抽象)类:看到的鸟可能属于子类"百灵鸟"。可以将"鸟类"想象成所有鸟的集合,而"百灵鸟类"是其中的一个子集。当一个对象所属的类是另外一个对象所属类的子集时,前者就被称为后者的子类,所以"百灵鸟类"是"鸟类"的子类,"鸟类"是"百灵鸟类"的超类

定义子类只是个定义更多方法的过程.

创建类>>> class Person: def setName(self,name):

self.name=name def getName(self): return self.name def greet(self): print "Hello,world! I'm %s" % self.name

>>> foo=Person()>>> bar=Person()>>> foo.setName('Nsds')>>> bar.setName('Ysdy')>>> foo.greet()

Hello,world! I'm Nsds>>> bar.greet()

Hello,world! I'm Ysdy

在调用foo的setName和greet函数时,foo自动将自己作为第一个参数传入函数中,因此命名为self。没有self的话,成员方法就没法访问他们要对其特性进行操作的对象本身了

特性是可以外部访问的:>>> foo.name'Nsds'>>> bar.name='Yoda'>>> bar.greet()

Hello,world! I'm Yoda

特性、函数、方法

self参数事实上正是方法和函数的区别。方法将它们的第一个参数绑定到所属的实例上,因此这个参数可以不必提供。所以可以将特性绑定到一个普通函数上,这样就不会有特殊的self参数了:

(特性是对象内部的变量,对象的状态由它的特性来描述,对象的方法可以改变它的特性,可以直接从对象外部访问特性)>>> class Class: def method(self): print 'I have a self!'

>>> def function(): print "I don't...">>> s=Class()>>> s.method()

I have a self!>>> s.method=function>>> s.method()

I don't...

变量birdsong引用绑定方法bird.sing上,还是对self参数的访问(仍旧绑定到类的相同实例上)>>> class Bird:

song='Squaawk'

def sing(self): print self.song

>>> bird=Bird()>>> bird.sing()

Squaawk>>> birdsong=bird.sing>>> birdsong()

Squaawk

在名称前加上双下划线,可以让方法或者特性变为私有(从外部无法访问)>>> class Secretive: def __inaccessible(self): print "Bet you can't see me..."

def accessible(self): print "The secret message is:"

self.__inaccessible()

>>> s=Secretive()>>> s.__inacessible()

Traceback (most recent call last):

File "", line 1, in

s.__inacessible()

AttributeError: 'Secretive' object has no attribute '__inacessible'>>> s.accessible()

The secret message is:

Bet you can't see me...

在类的内部定义中,所有以双下划线开的名字都被"翻译"成前面加上单下划线和类名的形式>>> Secretive._Secretive__inaccessible

>>> s._Secretive__inaccessible()

Bet you can't see me...

类的命名空间

定义类时,所有位于class语句中的代码都在特殊的命名空间中执行---类的命名空间。这个命名空间可由类内所有成员访问。

类的定义其实就是执行代码块>>> =+=1

>>> m1=>>>>>>1

>>> m1.members=2

>>>2

>>> m2=>>>>>>2

>>>>>>3

>>>2

>>>

新members值被写到了m1的特性中,屏蔽了类范围内的变量

超类>>> class Filter: def init(self):

self.blocked=[] def filter(self,sequence): return [x for x in sequence if x not in self.blocked]

>>> class SPAMFilter(Filter): def init(self):

self.blocked=['SPAM']

>>> f=Filter()>>> f.init()>>> f.filter([1,2,3])

[1, 2, 3]>>> s=SPAMFilter()>>> s.init()>>> s.filter(['SPAM','SPAM','egg','name','ff'])

['egg', 'name', 'ff']

继承,超类>>> class Filter: def init(self):

self.blockes=[] def filter(self,sequence): return [x for x in sequence if x not in self.blocked]

>>> class S(Filter): def init(self):

self.blocked=['s']

>>> f=Filter()>>> f.init()>>> f.filter([1,2,3])

多个超类

先继承的类中的方法会重写后继承的类中的方法>>> class C(): def calculate(self,expression):

self.value=eval(expression)

>>> class Talker(): def talk(self): print 'Hi,my value is',self.value

>>> class TalkingCalculator(C,Talker): pass>>> tc=TalkingCalculator()>>> tc.calculate('1+2*3')>>> tc.talk()

Hi,my value is 7

以上就是python中什么叫类的详细内容,更多请关注php中文网其它相关文章!

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

python叫什么-python中什么叫类相关推荐

  1. python中的新式类与旧式类的一些基于descriptor的概念(下)

    3. Descriptor介绍 3.1 Descriptor代码示例 3.2 定义 3.3 Descriptor Protocol(协议) 3.4 Descriptor调用方法 4. 基于Descri ...

  2. python中的新式类与旧式类的一些基于descriptor的概念(上)

    python中基于descriptor的一些概念(上) 1. 前言 2. 新式类与经典类 2.1 内置的object对象 2.2 类的方法 2.2.1 静态方法 2.2.2 类方法 2.3 新式类(n ...

  3. python创建类的实例方法-Python中动态创建类实例的方法

    简介 在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢? 其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模 ...

  4. python 类中定义类_Python中的动态类定义

    python 类中定义类 Here's a neat Python trick you might just find useful one day. Let's look at how you ca ...

  5. python中若干关于类的问题

    文章目录 前言 类的构造 类的方法 前言 本文介绍python中若干关于类的难题,这些问题或者概念竟然让人无法理解或者混淆.因而记录下来,若想到新的会继续更新. 类的构造 我们只知道__init__( ...

  6. [转]深刻理解Python中的元类(metaclass)

    类也是对象 在理解元类之前,你需要先掌握Python中的类.Python中类的概念借鉴于Smalltalk,这显得有些奇特.在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段.在Pytho ...

  7. Python中的元类是什么?

    元类是什么,我们将它们用于什么? #1楼 请注意,此答案适用于2008年编写的Python 2.x,元类在3.x中略有不同. 元类是使"类"工作的秘诀. 新样式对象的默认元类称为& ...

  8. python元类的概念_Python中的元类编程 | 学步园

    过去有这样的概念,一直没有深究它的意义.今天同事问到,刚好也好好了解下. #===============================================Python中的元类编程=== ...

  9. python简介怎么写-python中如何写类

    类的定义 Python中,定义类是通过class关键字,例如我们定义一个存储学生信息的类: class Student(object): pass class后面紧接着是类名,即Student,类名通 ...

最新文章

  1. oracle rodm包,由重启引起的Oracle RAC节点宕机分析及追根溯源
  2. 秒拍,一款为你纪录万千世界的好玩短频App是怎么运作的?
  3. 6993: Dominoes(纯bfs)
  4. 【双100%解法】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
  5. ei会议论文录用但不参加会议_会议论文投稿可以不参会吗
  6. android_Text
  7. angular div 滚动条事件_DOM事件
  8. Python统计共同参演电影最多的演员组合
  9. poj 2503 Babelfish trie树!!!!指针版和数组版 基础
  10. 线程安全的单例模式C++实现
  11. oracle数据库改语句,Oracle 惯用的修改语句
  12. [2019IEEE Transactions on Cybernetics ] Asymptotic Soft Filter Pruning for Deep Convolutional Neural
  13. iphone苹果手机如何连接电脑进行投屏?
  14. 2019 SWERC
  15. Windows 已经激活,但是显示副本不是正版的解决办法
  16. 语音压缩:压缩率和比特率
  17. 通过海康sdk实现指定时间段内的录像文件下载
  18. 【2022国赛模拟】逆天题——生成函数、单位根、Pollard-Rho算法
  19. Date Interoperability:Module ‘ACAD‘ is not licensed for use with this FME edition
  20. 【报名】RT-Thread师资培训,苏州大学王怀宜教授主讲!

热门文章

  1. time Machine备份时间间隔
  2. Leetcode:Substring with Concatenation of All Words分析和实现
  3. c++中c_str()函数
  4. MacOS sublime-text-removal
  5. UTF-8 带签名和不带签名的区别
  6. hadoop balancer
  7. 利用CodeIgniter中的Email类发邮件
  8. IE9,IE10,IE11下当Content-type为application/json时,打开接口会出现下载弹框
  9. 高精度模板 洛谷Luogu P1932 A+B A-B A*B A/B Problem
  10. [css]我要用css画幅画(四)