详解python中的面向对象

       面向对象编程是最有效的软件编写方法之一,在面向对象编程中,你编写表示现实世界中的事物和情景的类,并基于这些类来创建对象编写类时,你定义一大类对象都自动具备这种通用的行为,然后可根据需要赋予每个对象独特的个性,使用面向对象编程可模拟现实情景,从而达到你想要达到的目的。

本文将从面向对象中的类的实例、属性、方法、继承、多态多方面介绍python中的面向对象


    面向对象编程技术名词的解释

  1. 类:用来描述具有相同的属性和方法对象的集合,定义了该集合中每个对象所共有的属性和方法,对象是类的实例

  2. 方法:类的函数称为方法

  3. 实例化:创建一个类的实例,类的具体对象

  4. 局部变量:定义在方法中的变量,只作用于当前实例的类

  5. 实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用self修饰的变量

  6. 对象:通过定义的数据结构实例,对象包含类变量和实例变量

  7. 继承:一个派生类继承基类的字段和方法

  8. 多态:对不同类的对象使用同样的操作

  9. 封装:对外部世界隐藏对象的工作细节

                                    类的创建和实例化

示例1:

# 类的定义class Dog():    def __init__(self,name,age):    # 初始化属性name和age        self.name=name        self.age=age # 上边的变量是类变量,值在这个类的所有实例中均可共享    def sit(self):        print(self.name+'is now setting')    def roll_over(self):        print(self.name+'rolled over!')

 init()方法的解释:init()方法是一种特殊的方法,被称为类的构造函数或初始化方法,init初始化是魔法方法中的一种,用来初始化对象,在创建对象的时候,init方法会自动去调用。self代表类的实例,self在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。

创建实例

# 下面的Dog指的是类,而my_dog指的是根据类创建的实例my_dog=Dog('tom',6)

访问属性

# 这里访问属性是类属性print('my dog's name is'+my_dog.name+'.')
[out]:my dog's name is tom

调用方法

# 调用方法my_dog.sit()my_dog.roll_over()
[out]:tom is now settingtom rolled over!

                                     类的属性和方法

前面我们已经介绍了类的属性和方法,属性分为类属性和对象属性,而方法是类函数的统称。下面就仔细了解这两个概念

知识点1:类的属性

示例1:

class Dog():    # 类属性    name='tom'    age=12    def __init__(self,city)        # 对象属性        self.city=city        print('city is'+self.city)    def say(self):        print('hello world')         # 关于他们的调用方式 (1) 类属性可以通过'类名'+属性的方法来调用,print(Dog.name) (2) 对象属性是不可以这样使用的,使用方式是如下所示: d1=Dog()  d1.say()

提示:__private_attrs:两个下划线开头的,声明为该属性为私有,不能在类的外部被使用或者直接访问,在类的内部方法中使用时self.__private_attrs

 

知识点2:类的方法

在类的内部,使用def关键字来定义一个方法,与一般的函数定义是不同的,类方法必须包含参数self,且为第一个参数,self代表的是类的实例,self的名字并不是规定死的,也可以使用this等等.

示例2:​​​​​​​

class example():    __private=1  # 私有变量    name=12      # 共有变量    def count(self):        self.__private+=1        self.name+=2        print(self.__private)

提示:__private:两个下划线开头,声明该方法为私有方法,只能在类的内部调用,不能在类的外部调用,self.__private

 

知识点3:单下划线、双下划线、头尾双下划线的说明

  • __foo__:定义的是特殊方法,一般是系统定义名字,类似__init__()之类的

  • _foo:以单下换线开头的表示的是projected类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于from model import * 之中

  • __foo:双下划线的表示的是私有类型的变量,只能是允许这个类本身进行访问了

 

知识点4:常见类的专有方法

  • __init__:构造函数,在生成对象时调用

  • __del__:析构函数,释放对象时使用

  • __repr__:打印,转换

  • __setitem__:按照索引赋值

  • __getitem__:按照索引获取值

  • __len__:获得长度

  • __cmp__:比较运算

  • __call__:函数调用

  • __add__:加运算

  • __sub__:减运算

                                     类的继承和多态

继承的定义:即一个派生类继承基类的字段和方,继承也允许把一个派生类的对象作为一个基类对象对待,以普通的类为基础建立专门的类对象。

示例:​​​​​​​

# 定义一个类class people():    name=tom    age=0    def __init__(self,n,a):        self.name=n        self.age=a    def speak(self):        print('%s 说:我 %d 岁'%(self.name,self,age))  # 单继承 class student(people):     grade=12     def __init__(self,n,a,g):         # 调用父类的函数         people.__init__(self,n,a)         self.grade=g     # 覆盖父类的方法     def speak(self):         print('%s 说:我 %d 岁,我读 %d 年纪'%(self.name,self.age,self.grade))          s=student('tom',10,3) s.speak()  [out]: tom说:我10岁,我读3年纪​​​​​​

多态的定义:对不同类的对象使用同样的操作

python中多态的特点:

  • 只关心对象的实例方法是否同名,不关心对象所属的类型

  • 对象所属的类之间,继承关系可有可无

  • 多态的好处可以增加代码的外部调用灵活度,让代码更叫通用

  • 多态是调用方法的技巧,不会影响到类的内部设计

示例:​​​​​​​

# 调用同一个函数fly(),传入不同的参数,可以达到不同的功能class example(object):    def speak(self):        print('hello world')        class example1(object):    def speak(self):        print('hello beijing')
class example2(object):    def speak(self):        print('hello shanghai')     def speak(obj):    obj.fly()    ex1=example()fly(ex1)
ex2=example1()fly(ex2)
ex3=example2()fly(ex3)
[out]:hello worldhello beijinghello shanghai

随着大数据的时代的到来,数据变得越来越重要,数据可以帮助我们来看清行业的本质,也可以帮助我们更加快速的了解一个行业,关注公众号——DT学说,走进数据的时代

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值