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

Python 面向对象基础知识

时间:2017-11-12 14:09:00      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:包含   logs   比较   method   保存   order   支持   没有   属性   

面向对象基础知识

 

 

1.什么是面向对象编程?

- 以前使用函数

- 类 + 对象

 

2.什么是类什么是对象,又有什么关系?

 

class 类:
  def 函数1():
    pass
  def 函数2():
    pass

# obj是对象,实例化的过程
obj = 类()
obj.函数1()

 

========== 面向对象不好 ============

========== 函数编程好 ==============

 

 - 有时候,函数编程能实现?比较麻烦。

 - 面向对象非常的简单就能实现。

 

3.什么时候适用面向对象?

- 1.当多个函数有公共的参数的时候

- 2.根据一个模板创建某些东西

- 3.链接服务器,执行命令,关闭

注:面向对象,可以进行更多的修改需求修改。

 

4.self就是调用当前方法的对象。

- 函数(方法)保存在类里面。

- 字段保存在对象内存下。

 技术分享

 

 

5.静态字段的使用场景。

- 创建的每一个字段都有共同的值,就可以设置为静态字段。

 

成员属性

class Foo:

  def __init__(self,name):

    #普通字段,属性

    self.NAME = name

    self.Country = "中国"

 

全局属性

class Foo:

  #静态字段,公有属性

  Country = "中国"

  def __init__(self,name):

    self.NAME = name

技术分享

 

 

6.面向对象三大特性,继承,封装,多态。

封装:

- 类中封装:字段,方法

- 对象中封装了:普通字段的值

 

例子

class F1:

  def __init__(self,n):

    self.N = n

    print(F1)

 

class F2:

  def __init__(self,arg1):

    self.a = arg1

    print(F2)

 

class F3:

  def __init__(self,arg2):

    self.b = arg2

    print(F3)

 

o1 = F1(alex)

o2 = F2(o1)

o3 = F3(o2)

########### 输出Alex:o3.b.a.N###########

#o1 = F1(‘alex‘)

#o2 = F2(o1)

#o3 = F3(o2)

#print(o3.b.a.N)

#执行结果

#alex

#注: o3包含o2包含o1包含N赋值alex。

 

 

继承:

例子:

求出结果:对应继承。

class F1:

   def __init__(self):

      print(F1)

 

    def a1(self):

        print(F1a1)

    def a2(self):

        print(F1a2)

 

 

class F2(F1):

    def __init__(self):

        print(F2)

    def a1(self):

        print(F2a1)

    def a2(self):

        self.a2()

        print(F2a2)

 

 

class F3(F2):

    def __init__(self):

        print(F3)

 

# def a1(self):

# print(‘F3a1‘)

 

def a2(self):

    print(F3a1)

 

obj = F3()

obj.a1()                        

技术分享

 

 

多态:

- python:默认支持多态,没有类型限制

- 多态:多种形态。

 

 

7.字段与方法

字段:

普通字段(保存在对象中)

静态字段(保存在类中)

 

方法:

普通方法(保存在类中,调用者对象,至少有一个self参数)

class F1:

    ...

    def a1(self):

        print(self.name)

 

obj = F1()

obj.a1 = a1()

# 注:obj 对象内存没有存入数据,会占用内存。    

 

 

静态方法(保存在类中,调用者类,无需创建对象,可以有任意个参数):

class F1:

    @staticmethod

    def a1():

        print(self.name)

 

F1.a1()

# 注:相当于函数 @staticmethod。

 

Python 面向对象基础知识

标签:包含   logs   比较   method   保存   order   支持   没有   属性   

原文地址:http://www.cnblogs.com/xiangsikai/p/7821483.html

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