python 面向对象

一、组成:方法和属性。

  1. 类定义:

class MyClass():

    def say(self):

        print("hello")

test=MyClass()

test.say()

2.

属性:

self.attr = value

普通属性:

self.attr=value

静态属性:

attr=value

方法:

def func(self):

普通方法:

def func(self):

只能对象.func来调用

类方法:

def func(cls):

原则上应该类名.func来调用,实际上类名.func和对象.func都可以调用

静态方法:

def func():

对象.func或者类名.func

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())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值