码迷,mamicode.com
首页 > 编程语言 > 详细

python面向对象

时间:2016-06-29 01:13:59      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:python 面向对象

一、组成:方法和属性。

  1. 类定义:

class MyClass():

    def say(self):

        print("hello")

test=MyClass()

test.say()

2.

属性:

self.attr = value

TODO:

普通属性:

静态属性:

方法:

def func():

TODO:

普通方法:

类方法:

静态方法:

3.特殊的方法:

构造函数:

    def __init__(self, name):

        self.name = name

其他的特殊函数

len(x)## x.__len__()

a+b ## a.__add__(b)

a[b]## a.__getitem__(b)

eg:

class MyClass():

    def __init__(self, value): 

        self.value = value 

    def __add__(self, B):

        self.value = self.value + B.value 

    def print_value(self):      

        print(self.value)


class YourClass():

    def __init__(self, value): 

        self.value = value 


test=MyClass(1)

test+YourClass(2)

test.print_value()


二、特征:封装、继承、多态。

1.继承:

class FClass():

    pass

class S1Class(FClass):

    pass

class S2Class(FClass):

    pass

多继承:

class SSClass(S1Class, S2Class):

    pass

多继承涉及到父类中方法的选择顺序,首先需要明白名词经典类和新风格类。

经典类:class FClass():  

新风格类: class FClass(object):

经典类是按照深度优先的顺序进行选择的,即SSCLASS->S1Class->FClass->S2Class

新风格类是按照广度优先的顺序进行选择的,即SSCLASS->S1Class->S2Class->FClass

尽可能的使用新风格类,经典类不支持super,proterty等。

2.多态:

python不支持多态。对于已经熟悉的java, c++,在使用多态的时候,必须传入一个指定的类型,也就是说java和c++是强类型语言,所以出现了多态这样一个概念。

对于python的实现,由于不需要指定类型,因此可以很简单的实现:

eg:

class FClass():

    pass


class S1Class(FClass):

    def show(self):

        print("show1")


class S2Class(FClass):

    def show(self):

        print("show2")


def show(f):

    f.show()


show(S1Class())

show(S2Class())


python面向对象

标签:python 面向对象

原文地址:http://bosswanghai.blog.51cto.com/9384652/1793832

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!