学习Python中类及C++类的对比

Python是一种面向对象、解释性语言,所以在Python开发(http://www.maiziedu.com/course/python-px/)里包含有类,因为面向对象语言都有类。今天就简单分享一下Python中类,重点是与C++中的类进行对比。

C++中的父类,Python中叫超类(superclass)

创建类

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

C++中this关键字,Python中叫self 
似乎self关键字更加形象。

将特性绑定到一个普通函数

>>>class Class:

def method(self):

print ’I have a self!’

>>>def function():

print "I don’t..."

>>>instance = Class()

>>>instance.method()

I have a self!

>>>instance.method = function

>>>instance.method()

I don’t...

私有 
Python中没有private关键字,不论变方法还是特性,在名字前面加上双下划线即可:

class Secretive:

def __inaccessible(self):

print ’Bet you can’t see me...’

指定超类 
即我们C++中的父类、继承。这里不是使用的冒号,而是把超类写在子类后面的括号中:

class Filter:

def init(self):

self.blocked = []

class SPAMFilter(Filter):

def init(self):

self.blocked = [’SPAM’]

检查继承 
据我所知,在C++中没有直接方法判断两个类是否存在父子关系。 
Python中有内建方法,issubclass函数:

>>>issubclass(SPAMFilter, Filter)true

>>>issubclass(Filter, SPAMFilter)false

唯一需要注意的是,第一个参数是子类,第二个参数是超类。

检查一个对象是否是一个类的实例 
isinstance方法,第一个参数是实例,第二个参数是类名

多个超类 
也就是我们C++中所说的多重继承,即才括号里写几个类,中间用逗号隔开。

时间: 2024-12-25 14:27:41

学习Python中类及C++类的对比的相关文章

python中类方法、类实例方法、静态方法的使用与区别

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

笨办法学习python之模块、类、对象

模块就像字典 字典是python中唯一映射关系,它用一个事物对应另外一个事物,也就是所谓的key->value. 模块包含一些变量和函数,可以导入,并且可以用点(·)来操作访问变量和函数. 记住'从X获取Y的概念'. 他们相似,只是语法不同. 1.也就是说在python中有一条通用的模式: (1)有一个key =value的容器 (2)通过key从容器中获取数据 不同点: 在字典中key是字符串,写法为[key]:在模块中写法为.key,其余的地方一模一样. 类就像模块 可以认为模块就是pyth

C#与Java对比学习:类型判断、类与接口继承、代码规范与编码习惯、常量定义(转载)

C#与Java对比学习:类型判断.类与接口继承.代码规范与编码习惯.常量定义 类型判断符号: C#:object a;  if(a is int) { }  用 is 符号判断 Java:object a; if(a instanceof Integer) { } 用 instanceof 符号判断 类与接口的继承: C#:public class MDataRow : List<MDataCell>, IDataRecord, ICustomTypeDescriptor Java:publi

Python学习(三):入门篇:Python中怎么编写类

Python中怎么编写类 Last Edit 2013/5/2 先看一个例子: #person.py class person: """class to representaion a person""" def __init__(self,name,age): self.name=name if 0<age<=150: self.age=age else: print 'age is no valid!' def display(s

深刻理解Python中的元类(metaclass)

译注:这是一篇在Stack overflow上很热的帖子.提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自省有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理解,以及在什么情况下需要进行元编程.于是e-satis同学给出了神一般的回复,该回复获得了985点的赞同点数,更有人评论说这段回复应该加入到Python的官方文档中去.而e-satis同学本人在Stack Overflow中的声望积分也高达6

Python中的元类(metaclass)

推荐+收藏:深刻理解Python中的元类(metaclass) 做一些笔记学习学习: 在大多数编程语言中,类就是用来描述如何生成一个对象的代码段,在Python中类也是一个对象,这个(类)对象自身拥有创建对象(类实例)的能力. 因为它的本质是一个对象: 可以将它赋值给一个变量 可以拷贝它 增加属性 作为参数进行传递 可以在运行时动态地创建他们,可以在函数中创建类,只需要使用class关键字即可 当使用class关键字的时候,Python解释器会自动地创建这个对象,Python还提供了手动处理的方

Python中类的属性的访问控制

因为自己是做.NET的,之前有学习过Python,喜欢这门语言的很多特性,最近又不时看了一会儿,将自己的感受分享给大家,其中也难免会用C#的角度看Python的语法,主要还是讲下Python中类中对属性的访问. 讲到属性访问,都能想到公有,私有,受保护,C#的方法是public private protected,Python中也真心让自己感觉到难以理解. 首先定义一个类(博客园对python代码没着色,大家看图吧) 就个人认识,不一定对,觉得Python是一门动态的语言,很多属性都是动态加上去

深刻理解Python中的元类metaclass(转)

本文由 伯乐在线 - bigship 翻译 英文出处:stackoverflow 译文:http://blog.jobbole.com/21351/ 译注:这是一篇在Stack overflow上很热的帖子.提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自省有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理解,以及在什么情况下需要进行元编程.于是e-satis同学给出了神一般的回复,该回复获得了9

深刻理解Python中的元类

译注:这是一篇在Stack overflow上很热的帖子.提问者自称已经掌握了有关Python OOP编程中的各种概念,但始终觉得元类(metaclass)难以理解.他知道这肯定和自省有关,但仍然觉得不太明白,希望大家可以给出一些实际的例子和代码片段以帮助理解,以及在什么情况下需要进行元编程.于是e-satis同学给出了神一般的回复,该回复获得了985点的赞同点数,更有人评论说这段回复应该加入到Python的官方文档中去.而e-satis同学本人在Stack Overflow中的声望积分也高达6