Python之路~~~~~面向对象

Python的面向对象

面向对象

1、什么是面向对象

面向对象,相对于面向过程而言

编程语言的发展历史:

​ 一代语言:二进制

​ 二代语言:面向机器的语言(汇编)

​ 三代语言:C语言、C++、C##、java、PHP、python、ruby…

C语言:面向过程思维在编程

​ 细化问题,调用函数解决问题

世界观:当语言要解决庞大的问题是,面向过程暴露出它的不足之处。

总结:分类处理,创建世界的过程

2、类与对象

创建类,得到对象

​ 什么是类:类就是类别,进行分析得到的一些类别,关键字class来定义

​ 什么对象:类的一个实例(实实在在的案例)

类是一个抽象概念,是一个事物的总称,而对象就是实例,一个真正存在的事物

类是模板,对象时事物


"""
定义一个用户类,类名称叫做User

"""


class User(object):

    # 重写__init__ 初始化方法,该方法用来初始化属性,魔法方法,在构建对象的时候,会自动触发
    # 因为在构建对象的时候,才能确定对象的属性值,我们就可以将这些值传递
    def __init__(self, name, age, gender, tell):
        # print("构建对象的时候触发了")
        # # 属性,是类的属性
        # self.name 是User类的属性
        self.name = name
        self.age = age
        self.gender = gender
        self.tel = tell


    def study(self):
        print("我爱学习")

    def __str__(self):
        """这个魔法方法,在输出对象时调用"""
        return "[name = " + self.name + ",age = " + str(self.age) + ", gender = " + self.gender + ", tel = " + self.tel + "]"


if __name__ == "__main__":
    # 创建对象,创建了一个User的对象
    # 传递属性的值,用来初始化属性

    u = User("zhangsan", "18", "nan", "110")
    print(u)


3、类的定义

类中的变量和方法都叫做类成员

python使用class关键字来定义

类名称命名规范:遵循大驼峰法

class Stuednt(object):

​ 属性

静态的特征init()初始化这些属性 (这些属性又叫做类成员属性)
动态的行为动作使用函数模拟方法( method)

4、对象的创建

5、类的属性和方法

init 魔法的方法的使用

str

调用属性或者方法

  • 对象.属性名称
  • 对象.方法([参数列表])

案例的讲解

6、面向对象的三大特征

封装
继承
多态

封装

什么是封装?

我不知道这个东西底层是什么,但是我会用它

面向对象的封装是特指:

  • 1、将属性和方法 封装到一个类或者多个类中,需要使用的时候,通过对象调用对应的属性或方法

​ 将类的属性封装(隐藏)起来,提供公开的方法(getter和setter)来访问的行为!!(封装)

  • 2、将属性私有化(只有内部能访问,外界无法访问)

    提供公开的方法(getter和setter)来访问的行为!!(封装)

  • 格式:__属性名称

注意:这种私有不允许外界访问或者修改

第一种私有化的方式

python,如果要私有化一个属性,在属性前面加上两个下划线 username —> __username

class User(object):
	def _init__(self, username, age, gender, email):
        self.__username = username
        self.__age = ageself.__gender = genderself.__email = email
	def get_name(self):
        return self.__username

    def set_name(self.username) :
        self._username = username


if __name__ == '__main__':
	ul = User("张三", 18, "女", "110@qq.com")

第二种封装的写法

​ property函数

第三种封装的写法

​ 使用装饰器property完成 get方法的装饰(注意:函数名称建议就是私有前的属性名称)

​ 在set方法上@xxxx.setter

​ 第三种写法IU是第二种方式的变种写法

总结:

​ 在定义类的时候,一定要封装类,也就是一定要私有化属性,提供公开的set\get方法去访问。

继承

​ 继承:类与类之间也存在一种继承的关系

​ class son (RichMan) : #表示son继承RichMan,RichMan类是son类的父类(超类\基类)

​ #Son类是RichMan的子类

注意:继承父类的时候,并不是,所有的属性和方法都会继承!!!
而是只能继承公开的方法和属性
除了私有属性和方法,都能被继承

继承本质就是为实现代码的复用!! ! !

方法重写\覆盖(override )

​ 在继承基础上,如果子类方法父类的方法不能满足自己使用的时候,那么就重写这个方法

​ 注意:覆盖时:方法名称和参数必须一模一样

class fulei(object):
    pass

class son(fulei):
    pass

面试题:

​ python有函数重载吗,有方法重写。

​ 结论:python并没有函数重载!!!

重载(overload):函数重载指的是,函数名称相同,而参数的个数或者类型不同,这样的一些函数构成函数重载

public static int add(int x, int y){
		return x + y
}
public static float add(int x, float y){
		return x + y
}
public static float add(float x, int y){
		return x + y
}

add (2.3f,4.5f)

super关键字和python多继承

​ python支持多继承

​ class son (RichMan,object, XXXXx,XXX)

​ python运行一个类有多个父类

​ super关键字

​ super 超 是一个指针,默认指向父类

​ super().working()

​ 写在子类中,super调用的是父类中的wordking方法,super后面的括号意思是构造对象

​ 在子类中调用父类的方法或者属性

多态

​ 多态:指的就是对象的多种状态。多态是在继承的基础上而言。

​ 父类引用指向子类实例的现象,把这种现象叫做多态

​ List ls = new ArrayList ( ); #面向对象的语言中,运行父类对象指向子类实例

​ 注意:在弱数据类型中,天生支持多态

面试题:
1、你对面向对象的理解
2、面向对象的特征是什么
3、对封装的理解?
封装,类本身就是一个封装,封装了属性和方法。方法也是封装,对一些业务逻辑的封装。私有也是封装,将一些方法和属性私有化,对外提供可访问的接口。
4、对继承的理解
将共性的内容放在父类中,子类只需要关注自己特有的内容,共性的继承过来就行了。这样简化开发,符合逻辑习惯,利于扩展。
5、多态的理解
多态,一个对象在不同的情况下显示不同的形态。在python中因为是弱类型语言,对类型没有限定,所有 python中不完全支持多态,但是多态的思想呢,python也是能体现的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值