博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python面向对象
阅读量:5276 次
发布时间:2019-06-14

本文共 2302 字,大约阅读时间需要 7 分钟。

面向对象三大特性

一、封装

#1.将内容封装到某处
#创建类class Foo:    def __init__(self,name,age):   #称为构造方法,根据类创建对象时自动执行        self.name=name        self.age=age#根据类Foo创建对象#自动执行Foo类的__init__方法obj1=Foo("wupeiqi",18)  #将wupeiqi和18分别封装到obj1(即self)的name和age的属性中obj2=Foo('alex',73)
#2.从某处调用封装的内容
#2.1通过对象直接调用被封装的内容
class Foo():    def __init__(self,name,age):   #称为构造方法,根据类创建对象时自动执行        self.name=name        self.age=ageobj1= Foo('wupeiqi',18)print(obj1.name)print(obj1.age)obj2=Foo('alex',73)print(obj2.name)print(obj2.age)
#2.2通过self间接调用
class Foo():    def __init__(self,name,age):   #称为构造方法,根据类创建对象时自动执行        self.name=name        self.age=age    def detail(self):        print(self.name)        print(self.age)obj1=Foo('wupeiqi',18)obj1.detail()   #python默认将obj1传给self参数,即obj1.detail(obj1),所以此时方法内部的self=obj1,即:self.name是wupeiqi;self.age是18obj2=Foo('alex',73)obj2.detail()

二、继承

#继承 #   动物:吃、喝、拉、撒 # #      猫:喵喵叫(猫继承动物的功能) # #      狗:汪汪叫(狗继承动物的功能)
class Animal:    def eat(self):        print('%s吃'%self.name)    def drink(self):        print('%s喝'%self.name)    def shit(self):        print('%s拉'%self.name)    def pee(self):        print('%s撒'%self.name)class Cat(Animal):    def __init__(self,name):        self.name=name        self.breed='猫'    def cry(self):        print('喵喵叫')class Dog(Animal):    def __init__(self,name):        self,name=name        self.dreed='狗'    def cry(self):        print('汪汪叫')#############执行##############c1=Cat('小白家的小黑猫')c1.eat()c2=Cat('小黑家的小白猫')c2.drink()d1=Dog('胖子家的小痩狗')d1.eat()

 

三、多态

面向对象使用场景

1.如果某个函数传入多个共同的参数时

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

3.使用同一个对象连接时

class SSH:    def __init__(self,host,port,pwd,username):        self.host=...    def connection(self):        #去创建连接        self.conn=和服务器创建的连接对象    def close(self):        self.comm.关闭    def upload(self):        self.conn 使用连接上传文件    def cmd(self):        self.conn 使用连接执行命令obj=SSH(...)obj.connection()

补充:

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

静态字段适用场景:每个对象中保存相同的东西时,可以使用静态字段

2.

类?属性(实例变量、类变量、私有属性__var)、方法(构造方法、析构方法 (在销毁实例时可以写)、私有方法)

对象?实例化一个类之后得到的对象

封装?把一些功能的实现细节不对外暴露

  -----类中封装了:字段、方法

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

举例:

继承?代码的重用、单继承、多继承(py2.7:经典类:深度优先,新式类:广度优先;py3.0:均是广度优先,推荐写新式类class Foo(object))

多态?多种形态、接口的重用

Python中默认支持多态

3.字段:普通字段(保存在对象中)、静态字段(保存在类中)

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

 

转载于:https://www.cnblogs.com/gqq-0504/p/7029252.html

你可能感兴趣的文章
PAT甲级——1101 Quick Sort (快速排序)
查看>>
python创建进程的两种方式
查看>>
1.2 基础知识——关于猪皮(GP,Generic Practice)
查看>>
迭代器Iterator
查看>>
java易错题----静态方法的调用
查看>>
php建立MySQL数据表
查看>>
最简单的线程同步的例子
查看>>
旅途上看的电影和观后感
查看>>
Ztree异步树加载
查看>>
关于IE和火狐,谷歌,Safari对Html标签Object和Embed的支持问题
查看>>
poj3320 Jessica's Reading Problem(尺取思路+STL)
查看>>
分布式计算开源框架Hadoop介绍
查看>>
安卓平台接口剖析
查看>>
坏的事情不都会带来坏的结果
查看>>
RPC的基础:调研EOS插件http_plugin
查看>>
第二次团队冲刺第二天
查看>>
bzoj 2257 (JSOI 2009) 瓶子与燃料
查看>>
11)Java abstract class 和 interface
查看>>
使用xrdp或Xmanager 远程连接 CentOS6
查看>>
Linux误删恢复
查看>>