python叫什么-python中什么叫类
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中什么叫类相关推荐
- python中的新式类与旧式类的一些基于descriptor的概念(下)
3. Descriptor介绍 3.1 Descriptor代码示例 3.2 定义 3.3 Descriptor Protocol(协议) 3.4 Descriptor调用方法 4. 基于Descri ...
- python中的新式类与旧式类的一些基于descriptor的概念(上)
python中基于descriptor的一些概念(上) 1. 前言 2. 新式类与经典类 2.1 内置的object对象 2.2 类的方法 2.2.1 静态方法 2.2.2 类方法 2.3 新式类(n ...
- python创建类的实例方法-Python中动态创建类实例的方法
简介 在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢? 其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模 ...
- python 类中定义类_Python中的动态类定义
python 类中定义类 Here's a neat Python trick you might just find useful one day. Let's look at how you ca ...
- python中若干关于类的问题
文章目录 前言 类的构造 类的方法 前言 本文介绍python中若干关于类的难题,这些问题或者概念竟然让人无法理解或者混淆.因而记录下来,若想到新的会继续更新. 类的构造 我们只知道__init__( ...
- [转]深刻理解Python中的元类(metaclass)
类也是对象 在理解元类之前,你需要先掌握Python中的类.Python中类的概念借鉴于Smalltalk,这显得有些奇特.在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段.在Pytho ...
- Python中的元类是什么?
元类是什么,我们将它们用于什么? #1楼 请注意,此答案适用于2008年编写的Python 2.x,元类在3.x中略有不同. 元类是使"类"工作的秘诀. 新样式对象的默认元类称为& ...
- python元类的概念_Python中的元类编程 | 学步园
过去有这样的概念,一直没有深究它的意义.今天同事问到,刚好也好好了解下. #===============================================Python中的元类编程=== ...
- python简介怎么写-python中如何写类
类的定义 Python中,定义类是通过class关键字,例如我们定义一个存储学生信息的类: class Student(object): pass class后面紧接着是类名,即Student,类名通 ...
最新文章
- oracle rodm包,由重启引起的Oracle RAC节点宕机分析及追根溯源
- 秒拍,一款为你纪录万千世界的好玩短频App是怎么运作的?
- 6993: Dominoes(纯bfs)
- 【双100%解法】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
- ei会议论文录用但不参加会议_会议论文投稿可以不参会吗
- android_Text
- angular div 滚动条事件_DOM事件
- Python统计共同参演电影最多的演员组合
- poj 2503 Babelfish trie树!!!!指针版和数组版 基础
- 线程安全的单例模式C++实现
- oracle数据库改语句,Oracle 惯用的修改语句
- [2019IEEE Transactions on Cybernetics ] Asymptotic Soft Filter Pruning for Deep Convolutional Neural
- iphone苹果手机如何连接电脑进行投屏?
- 2019 SWERC
- Windows 已经激活,但是显示副本不是正版的解决办法
- 语音压缩:压缩率和比特率
- 通过海康sdk实现指定时间段内的录像文件下载
- 【2022国赛模拟】逆天题——生成函数、单位根、Pollard-Rho算法
- Date Interoperability:Module ‘ACAD‘ is not licensed for use with this FME edition
- 【报名】RT-Thread师资培训,苏州大学王怀宜教授主讲!
热门文章
- time Machine备份时间间隔
- Leetcode:Substring with Concatenation of All Words分析和实现
- c++中c_str()函数
- MacOS sublime-text-removal
- UTF-8 带签名和不带签名的区别
- hadoop balancer
- 利用CodeIgniter中的Email类发邮件
- IE9,IE10,IE11下当Content-type为application/json时,打开接口会出现下载弹框
- 高精度模板 洛谷Luogu P1932 A+B A-B A*B A/B Problem
- [css]我要用css画幅画(四)