zoukankan      html  css  js  c++  java
  • 面向对象编程基础(进阶4)

    面向对象编程基础(进阶4)

    1. python之面向对象编程

      万物皆对象,因学过Java面向对象编程思想,Python也一样,所以简单写下这节

      什么是面向对象编程

    • 面向对象编程是一种程序设计范式
    • 把程序看做不同对象的相互调用
    • 对现在世界建立对象模型

      面向对象编程的基本思想

    • 类和实列
    • 类用于定义抽象类型
    • 实例根据类的定义被创建出来

    2. python之定义类并创建实例

    1 # -*- coding:utf-8 -*-
    2 class Person(object):
    3     pass
    4 
    5 xiaoming = Person()
    6 xiaohong = Person()
    7 print xiaoming
    8 print xiaohong
    9 print xiaoming == xiaohong

    3. python中创建实例属性

     1 class Person(object):
     2     pass
     3 p1 = Person()
     4 p1.name = 'Bart'
     5 
     6 p2 = Person()
     7 p2.name = 'Adam'
     8 
     9 p3 = Person()
    10 p3.name = 'Lisa'
    11 
    12 L1 = [p1, p2, p3]
    13 L2 = sorted(L1, lambda p1, p2: cmp(p1.name, p2.name))
    14 
    15 print L2[0].name
    16 print L2[1].name
    17 print L2[2].name

    4. python中初始化实例属性

      在定义 Person 类时,可以为Person类添加一个特殊的__init__()方法,当创建实例时,init()方法被自动调用,我们就能在此为每个实例都统一加上以下属性

     1 class Person(object):
     2     def __init__(self, name, gender, birth, **kw):
     3         self.name = name
     4         self.gender = gender
     5         self.birth = birth
     6         for k, v in kw.iteritems():
     7             setattr(self, k, v)
     8 xiaoming = Person('Xiao Ming', 'Male', '1990-1-1', job='Student')
     9 print xiaoming.name
    10 print xiaoming.job

    5. python中访问限制

      Python对属性权限的控制是通过属性名来实现的,如果一个属性由双下划线开头(__),该属性就无法被外部访问。

    1 class Person(object):
    2     def __init__(self, name, score):
    3         self.name = name
    4         self.__score = score
    5 
    6 p = Person('Bob', 59)
    7 
    8 print p.name
    9 print p.__score

    6. python中创建类属性

      每个实例各自拥有,互相独立,而类属性有且只有一份。

     1 class Person(object):
     2     count = 0
     3     def __init__(self, name):
     4         Person.count = Person.count + 1
     5         self.name = name
     6 p1 = Person('Bob')
     7 print Person.count # 1
     8 
     9 p2 = Person('Alice')
    10 print Person.count # 2
    11 
    12 p3 = Person('Tim')
    13 print Person.count # 3

    7. python中类属性和实例属性名字冲突怎么办

     1 class Person(object):
     2     __count = 0
     3     def __init__(self, name):
     4         Person.__count = Person.__count + 1
     5         self.name = name
     6         print Person.__count
     7 
     8 p1 = Person('Bob')
     9 p2 = Person('Alice')
    10 
    11 print Person.__count

    8. python中定义实例方法

     1 class Person(object):
     2 
     3     def __init__(self, name, score):
     4         self.__name = name
     5         self.__score = score
     6 
     7     def get_grade(self):
     8         if self.__score >= 80:
     9             return 'A'
    10         if self.__score >= 60:
    11             return 'B'
    12         return 'C'
    13 
    14 p1 = Person('Bob', 90)
    15 p2 = Person('Alice', 65)
    16 p3 = Person('Tim', 48)
    17 
    18 print p1.get_grade()
    19 print p2.get_grade()
    20 print p3.get_grade()

    9. python中方法也是属性

     1 class Person(object):
     2 
     3     def __init__(self, name, score):
     4         self.name = name
     5         self.score = score
     6         self.get_grade = lambda: 'A'
     7 
     8 p1 = Person('Bob', 90)
     9 print p1.get_grade
    10 print p1.get_grade()

    10. python中定义类方法

      和属性类似,方法也分实例方法和类方法。

     1 class Person(object):
     2     __count = 0
     3     @classmethod
     4     def how_many(cls):
     5         return cls.__count
     6     def __init__(self, name):
     7         self.name = name
     8         Person.__count = Person.__count + 1
     9 
    10 print Person.how_many()
    11 p1 = Person('Bob')
    12 print Person.how_many()
    13 
    14 


     

     
     
     
  • 相关阅读:
    Adobe Flash Builder 4.5 Android Air 程序开发系列 之六 多点触控
    Adobe Flash Builder 4.5 Android Air 程序开发系列 之九 定位
    Adobe Flash Builder 4.5 Android Air 程序开发系列 之七 重力感应
    Adobe Flash Builder 4.5 Android Air 程序开发系列 之五 保存数据的几种方式
    Adobe Flash Builder 4.5 Android Air 程序开发系列 之八 照相机
    Adobe Flash Builder 4.5 Android Air 程序开发系列 之三 Application 配置详解
    Adobe Flash Builder 4.5 Android Air 程序开发系列 之四 打开与关闭应用程序是的保存数据
    ADOBE FLASH BUILDER 4.6 IOS 开发之部署与调试
    [译] 高性能JavaScript 1至5章总结
    页签及盒子的web标准实现
  • 原文地址:https://www.cnblogs.com/MrFiona/p/6423085.html
Copyright © 2011-2022 走看看