开始学习面向对象,可以说之前的学习和编程思路都是面向过程的,从上到下,一步一步走完。

如果说一个简单的需求,用面向过程实现起来相对容易,但是如果在日常生产,面向对象就可以发挥出他的优势了。

程序的可扩展性,代码的可读性,以及后期的优化和二次开发,都是面向过程不可相比的,下面整理一下知识点。

类:

#Authon Ivor
class dog(object):
#公有变量,如果有私有变量,优先调用私有,如果没有调用公有
age = 8 def __init__(self,name,type):
self.name = name
self.type = type def bark(self):
print("%s is barking,wang.wang..wang..." % self.name)
self.type = "wang.wang..wang.." def get_type(self):
print("{0} 's type is {1}".format(self.name,self.type)) d = dog("lovely","Teddy")
d2 = dog("diudiu","田园犬") d.bark()
d2.get_type()
d.age = 10
print(d.age)
print(d2.age)
dog.age = 9
print(d.age)
print(d2.age) def bark2():
print("bark")
d.bark = bark2
d.bark()

继承:

#Authon Ivor

class Person(object):
def __init__(self,name,age):
self.name = name
self.age = age
self.sex = "F"
def talk(self):
print("I'm a person!") class BlackPerson(Person):
#先继承,再重构
def __init__(self,name,age,strength):
Person.__init__(self,name,age)
self.strength = strength
#重构函数
def talk(self):
print("I am BlackMan!")
class WhitePerson(Person):
pass B = BlackPerson("YoYo",22,"Strong")
B.talk()

继承2:

#Authon Ivor
class SchoolMember(object):
'''基类'''
member = 0
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex =sex
self.enroll() def enroll(self):
print("[%s] has just enrolled ." % self.name)
SchoolMember.member += 1 def tell(self):
print("info %s".center(20,"-") % self.name )
for k,v in self.__dict__.items():
print("%s:%s" % (k,v))
print("info %s".center(20,"-") % self.name )
#析构函数
def __del__(self):
print("\033[31;1mmember [%s] is dead!\033[0m" %self.name)
SchoolMember.member -= 1 class Teacher(SchoolMember):
'''讲师类'''
def __init__(self,name,age,sex,salary,tuition):
# 新式类写法
# super(Teacher,self).__init__(name,age,sex)
# 经典类写法
SchoolMember.__init__(self,name,age,sex)
self.salary = salary
self.tuition = tuition class Student(SchoolMember):
'''学生类'''
def __init__(self,name,age,sex,tuition):
SchoolMember.__init__(self,name,age,sex)
self.amount = 0
self.tuition = tuition s1 = Student("Hebe",18,"F","Python")
t1 = Teacher("Yoyo",22,"F",10000,"Python")
t1.tell()
print(SchoolMember.member)
del s1
print(SchoolMember.member)

封装补充:

#Authon Ivor

class F1(object):
def __init__(self,arg):
self.a = arg class F2(F1):
def __init__(self,arg):
self.b = arg class F3(F2):
def __init__(self,arg):
self.c = arg o1 = F1("Alex")
o2 = F2(o1)
o3 = F3(o2) #######通过o3调取到Alex#######
print(o3.c.b.a)

继承补充:

#Authon Ivor
class F1(object):
def a1(self):
print("F1a1") class F2(F1):
def a1(self):
self.a2()
print("F2a1")
def a2(self):
print("F2a2") class F3(F2): def a2(self):
print("F3a2") #优先调取obj自身的方法
obj = F3()
obj.a1()

Python学习-day6 面向对象概念的更多相关文章

  1. Python学习:基本概念

    Python学习:基本概念 一,python的特点: 1,python应用场景多;爬虫,网站,数据挖掘,可视化演示. 2,python运行速度慢,但如果CPU够强,这差距并不明显. 3,严格的缩进式编 ...

  2. Python学习之==>面向对象编程(二)

    一.类的特殊成员 我们在Python学习之==>面向对象编程(一)中已经介绍过了构造方法和析构方法,构造方法是在实例化时自动执行的方法,而析构方法是在实例被销毁的时候被执行,Python类成员中 ...

  3. python 学习day6(面向对象)

    博客部分内容转自:http://www.cnblogs.com/wupeiqi/p/4493506.html 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法 ...

  4. Python学习一(面向对象和函数式编程)

    学习了一周的Python,虽然一本书还没看完但是也收获颇多,作为一个老码农竟然想起了曾经荒废好久的园子,写点东西当做是学习笔记吧 对Python的语法看的七七八八了,比较让我关注的还是他编程的思想,那 ...

  5. 从0开始的Python学习014面向对象编程

     简介 到目前为止,我们的编程都是根据数据的函数和语句块来设计的,面向过程的编程.还有一种我们将数据和功能结合起来使用对象的形式,使用它里面的数据和方法这种方法叫做面向对象的编程. 类和对象是面向对象 ...

  6. Python学习--10 面向对象编程

    面向对象编程--Object Oriented Programming,简称OOP,是一种程序设计思想.OOP把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数. 本节对于面向对象的概念不做 ...

  7. python学习 day23 面向对象三大特性之继承

    ### 面向对象三大特性值继承#### 1.什么是继承 继承是一种关系,必须存在两个对象才可能产生这种关系,在现实生活中的继承,王思聪可以继承王健林的财产 被继承的成为父,继承的一方成为子 在程序中, ...

  8. python 学习分享-面向对象

    好激动,学了四个月的面向对象,我终于勉勉强强的把作业做完了,现在来重构我的面向对象的知识! 面向过程:根据业务逻辑从上到下写垒代码 函数式:将某功能代码封装到函数中,日后便无需重复编写,仅调用函数即可 ...

  9. python学习笔记--面向对象的编程和类

    一.面向对象的编程 面向对象程序设计--Object Oriented Programming,简称oop,是一种程序设计思想.二.面向对象的特性类:class类,对比现实世界来说就是一个种类,一个模 ...

随机推荐

  1. 【css】css2实现两列三列布局的方法

    前言 对于 flex 弹性布局相信大家都有所了解,它是 css3 中的属性,然而它具有一定的兼容性问题.楼主前几天面试时遇到了面试官需要设计一个两列布局,我当然就说父元素 flex 吧哩吧啦,然而需要 ...

  2. Java多线程常见问题

    1. 进程和线程之间有什么不同? 一个进程是一个独立(self contained)的运行环境,它可以被看作一个程序或者一个应用.而线程是在进程中执行的一个任务.Java运行环境是一个包含了不同的类和 ...

  3. ftp错误

    ftp 550 检查是否目录,文件确定存在. 服务器列表是要设置unix列表模式.

  4. FZU 2204 7

    题意: n个有标号的球围成一个圈.每个球有两种颜色可以选择黑或白染色.问有多少种方案使得没有出现连续白球7个或连续黑球7个? 思路: 如果出现连续的8,9...个球同色,那么也必定含有7个同色.需要统 ...

  5. C、C++、C#中struct的简单比较

    比较这三者是因为C.C++.C#这三者存在着一定的血缘关系,而他们三者都有的struct却有很大的不同. 功能 C中的struct是最简单的.只能有成员变量而不能有成员函数. C++和C#中都支持,而 ...

  6. JAVA小游戏之两个物体碰撞产生的碰撞检测

    首先必须了解两个物体,在移动时,会有怎样的效果,比如沪我们小时候耍过的坦克大战.看起来很简单,但是写起代码来,复杂的要多: 下面举个例子: // 构造一个新的 Rectangle,其左上角的坐标为 ( ...

  7. NGUI类之间的关系架构

    NGUI Drawcall 1.使用同一个altals的元素尽量放在同一个UIPanel下面,在NGUI中,它消耗的drawcall是以每个Panel为独立计算单位进行计算的. 2.如果一个UIPan ...

  8. AMD、CMD规范

    本文原链接:https://cloud.tencent.com/developer/article/1177217 AMD && CMD 前言 一.模块 二.CommonJS 三.AM ...

  9. 项目中遇到的bug

    1. babel编译转换时发生了报错: BabelLoaderError: SyntaxError: Unexpected token babel预置的转换器是 babel-preset-es2015 ...

  10. SC || 那些CheckStyle中的错误们

    lab5里给了我们一个checkstyle查代码风格的方法.. 然后 lab4代码 copy一份! 添加checkstyle! 项目 右键 checkstyle!(自信脸) 3s后——7256 war ...