关于Python中的class

时间:2014.05.14

地点:基地

-----------------------------------------------------------------------------------

一、背景

关于Python,自己一直处于边学边用的落后年代,边学边用有一个好处,那就是我可以针对性的去学习,哪个不懂就看哪个,如此目的性很强,但还有一处不足之处,缺乏系统性的学习,唯有系统性深入的学习才能让你在这个世界里游刃有余,不然一个小小的问题就能让你纠结好一阵子,材料院的项目全盘抛弃了C#,转向Python虽然让自己变得很累,但通过这个项目接触了Python的强大威力,亦也是收获。但正如所说,对于应该深入系统的学习,才可让自己驾驭于语言之上,不然总被语言驾驭。语言重不重要,不可一板拍死,熟练则不重要,不熟练则重要。

-----------------------------------------------------------------------------------

二、如何定义Python中的类

类是OOP编程中的核心,当然Python又没强制性要求面向对象编程,但类的精神实在博大,而不得不细细品味下Python中的类又究竟是如何一回事。和大多数面向对象编程语言一样,类提供创建实例的蓝图。Python中定义类的格式如下:

class MyClass(BaseClass):
    "optional documentation string"
     #static member declarations
     #method declarations

类名字后紧跟着括号,括号里可提供一个可选的父类(基类),若无合适的基类,我们可以使用object作为基类,用object类作为自定义类的基类,这也是很常见的一种形式。之后便是文档字符串,之前一直以为这一行的作用,后来才知道这种文档字符串java里也有,然后接着是成员定义和方法定义。一个例子:

class MyClass(object):
    ‘my class example‘
    version=1
    def __init__(self,nm=‘Jon‘):
        ‘constructor‘
        self.name=nm
    def ShowName(self):
        ‘display infor function‘
        print self.name
        print self.__class__.__name___              #__name__表示用于实例化该实例的类的名字,即该实例的蓝图名字是什么
    def ShowVersion(self):
        ‘display class static arrribute‘
        print self.version
    def AddMe2Me(self,x):
        ‘apply+operation to argument‘
        return x+x

注意类定义各成员变量和成员函数的缩进

上面类中定义了一个成员变量version,它将被所有实例和类的方法共享,另外所有以连续两根下划线标记开头和结束的类方法都是一些特殊方法,比如这里的__init__()方法,类的实例被创建时,相当于一个构造器,但又和C++,C#等不同,它并不创建实例,仅仅是将我们创建好了对象后,执行的第一个方法,目的给是对象必要的初始化工作,其实叫初始化器更合理吧,本来就是一个初始化器,默认的__init__()方法是什么也不做,因此我们常编写自己的__init__方法,以修饰我们创建的对象。这里的self是类实例自身的引用,就像C++类中使用的this标识符

-----------------------------------------------------------------------------------

三、如何创建类的实例

实例化一个类可形如以下:

my_object=MyClass(‘Jim‘)

然后利用创建好的实例,你就可以在它上面通过点属性访问实例的成员变量或成员函数了。这种Python中的类实例化注意和其他语言区别。

关于Python中的class,布布扣,bubuko.com

时间: 2024-10-13 16:54:33

关于Python中的class的相关文章

走入计算机的第四十天(python中sockserver模块)

一.Python中的sockserver模块 1.该模块与sock模块不同之处是该模块自动帮我们分装好了一些功能,让我们在编程的时候直接调用这些功能就可以了,节省了编程步骤. 2.如图所示 注释:上图为服务端设置 该模块的操作方法比较死板,我们只要会熟悉的使用他就可以了.

python中if __name__ == '__main__':

Using a module's __name__ Example? 8.2.? Using a module's __name__ #!/usr/bin/python # Filename: using_name.py if __name__ == '__main__': print 'This program is being run by itself' else: print 'I am being imported from another module' Output $ pytho

关于Python中的yield

关于Python中的yield http://www.cnblogs.com/tqsummer/archive/2010/12/27/1917927.html http://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/ 一.迭代器(iterator) 在Python中,for循环可以用于Python中的任何类型,包括列表.元祖等等,实际上,for循环可用于任何“可迭代对象”,这其实就是迭代器 迭代器是一个实现了迭代器协议

python中的那些“神器”

"武林至尊,宝刀屠龙,号令天下,莫敢不从,倚天不出,谁与争锋",这是神器.不过今天要说的python中的"神器"就没有这么厉害了,这里要说的"神器"其实就是名称里面带了个"器"的,如下: 列表解析器 迭代器 生成器 装饰器 列表解析器 现在遇到了这样一个问题需要解决:"有一个数字的列表,要求对该列表中的奇数乘以2,返回处理完成后的列表(不改变原来列表的顺序,仅对列表中的奇数乘以2)",比较传统的方法可能会是

Python中字符串格式化如何实现?

Python开发中字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存. This PEP proposes a new system for built-in string formatting operations, intended as a replacement for the existing '%' string formatting operator. 1.百分号方式 %[(na

python 中*args 和 **kwargs

简单的可以理解为python 中给函数传递的可变参数,args 是 列表的形式.kwargs 是 key,value的形式,也就是python 中的字典. *args 必须出现在**kwargs 的前边,否则会抛异常. 1 def test(*args, **kwargs): 2 print args 3 print kwargs 1 if __name__ == '__main__': 2 print '---test 1---' 3 test(1, 2, 3) 4 print '---tes

python中super出现的TypeError: must be type, not classobj 原因及解决

执行一下代码,出现错误,TypeError: must be type, not classobj class A():    def __init__(self):        print("Enter A")        print("Leave A") class B(A):    def __init__(self):        print("Enter B")        super(B, self).__init__()  

python中的切片问题

对于在一个字符串中选取几个字符,不同的语言有不同的解决方案,python 中就有了切片的方法.    在list中,如下:     s=list(range(1,101))    如果想要选取偶数个数字(或者选取偶数),可以用循环的方法:但是方法臃肿,比较"笨"    但是python中给出的切片方法是更加的优雅的,如下:    L=list(range(1,101))    print(L[0])    print(L[0:10])#输出结果是[1, 2, 3, 4, 5, 6, 7

Python学习-16.Python中的错误处理

虽然叫错误,但跟 C# 中的异常是一回事.只不过 Python 中叫错误(Error)而 C# 中叫异常(Exception). 先手工产生一个异常: 1 file = open('','r') 上面一句由于路径是空路径,因此文件肯定是不存在的,执行这一句会引发 FileNotFoundError 这个错误. 既然是错误的,程序也停止了,这是我们不希望的,因此得想办法处理一下. 在 Python 中,异常处理使用 try.except.finally 这三个关键字. 修改代码如下: 1 path

python中各种基础类型的转换,二进制,八进制,十进制,十六进制

python中所有类型都是作为对象的形式来存在的. 在python中没有char型,只有字符串类型,这样我们可能将char型转换为整型时极不方便,但是python已经提供了这些转换的内置函数. python 中除了整型,其他进制的只能用字符串来表示 1 int() 可以将 二进制,八进制,十六进制转换成十进制整型 >>> int('1111', 2) 15 >>> int('f', 16) 15 >>> int('17', 8) 15 2 chr()