python笔记小白入门_Python 笔记:全网最详细最小白的Class类和实例详解

本文深入介绍了Python面向对象编程的基础概念,包括类、实例、封装、继承和多态。通过实例展示了如何定义类、创建对象以及如何利用继承和多态特性。此外,还讲解了类变量、实例变量、局部变量和静态变量的区别,并探讨了方法重写、变量作用域等关键概念。
摘要由CSDN通过智能技术生成

面向对象最重要的概念就是类(class)和实例(instance),类是抽象,而实例(Instance)则是一个个具体的对象

面向对象三大特点:封装、继承和多态

class Animal(object):

def __init__(self, name):

self.name = name # 初始化类变量

def Dog(self): # 创建类中的方法

print(self.name)

复制代码

一、基本概念

1.1 概念

类(Class):

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

类变量:

类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。

数据成员:

类变量或者实例变量, 用于处理类及其实例对象的相关的数据。

方法重写:

如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。

局部变量:

定义在方法中的变量,只作用于当前实例的类。

实例变量:

在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,是在类声明的内部但是在类的其他成员方法之外声明的。

继承:

即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。

实例化:

创建一个类的实例,类的具体对象。

方法:

类中定义的函数。

对象:

通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。

1.2 代码实例

# -*- coding: utf-8 -*-

"""

1、全局变量:在模块内、在所有函数外面、在class外面,这就是全局变量。

2、局部变量:在函数内、在class的方法内(未加self修饰的) ,这就是局部变量

3、静态变量:在class内的,但不在class的方法内的,这就是静态变量

4、实例变量:在class的方法内的,用self修饰的变量,这就是实例变量

"""

Global_Variable = "我是全局变量"

class ExampleClass(object):

Class_static_variable = "我是类静态变量" # 静态变量

def __init__(self, Instance_Variable): # 构造函数,sel代表对象,有Instance_Variable属性

self.Instance_Variable = Instance_Variable # 实例变量

def study_example(self):

Local_variable = "我是一个局部变量" # 局部变量

print(Local_variable) # 输出局部变量

print(self.Instance_Variable) # 输出实例变量

class ChlidExample(ExampleClass):

def __init__(self, Instance_Variable, Chlid_Variable):

ExampleClass.__init__(self, Instance_Variable) # 初始化父类实例变量

self.Chlid_Variable = Chlid_Variable

def test(self):

print("学习 python的面向对象,了解变量是必须的,我是孩子变量 {},我是继承变量:{}".format(self.Chlid_Variable, self.Instance_Variable))

Instance_Variable = "我是用来测试实例变量的"

Chlid_Variable = "我是用来测试局部变量的 "

study = ChlidExample(Instance_Variable, Chlid_Variable) # 调用子类对象

study.study_example() # 子类调用父类方法

study_child = ChlidExample(Instance_Variable, Chlid_Variable) # 调用子类对象

study_child.test() # 子类调用子类方法

复制代码

二、面向对象三大特性解析

2.1 封装

封装,顾名思义就是将内容封装到某个地方,以后再去调用被封装在某处的内容。

所以,在使用面向对象的封装特性时,需要:

将内容封装到某处

从某处调用被封装的内容

class Animal(object):

def __init__(self, name): # 初始化方法

self.name = name # 初始化类变量

def Dog(self): # 创建类中的方法

print(self.name)

def Cat(self): # 创建类中的方法

print(self.name)

info = Animal('dahuang') # 封装到对象 info

print(info.name) # 直接调用

info.Dog() # self 间接调用

复制代码

2.2 继承

继承,面向对象中的继承和现实生活中的继承相同,即:子可以继承父的内容。

对于面向对象的继承来说,其实就是将多个类共有的方法提取到父类中,子类仅需继承父类而不必一一实现每个方法。

class Animal(object):

def __init__(self, name): # 初始化方法

self.name = name # 初始化类变量

def eat(self): # 创建类中的方法

print("%s吃 "%self.name)

def drink(self): # 创建类中的方法

print("%s喝"%self.name)

class Dog(Animal): # 继承Animal的 Dog

def __init__(self, name):

self.name = name #

def cry(self):

print("汪汪叫")

class Cat(Animal): # 继承Animal的 Cat

def __init__(self, name):

self.name = name #

def cry(self):

print("喵喵叫")

child = Dog('邻居家的猫') # 封装到子类对象 info

child.drink() # 子类调用父类的方法

复制代码

2.3 多态

多态,字面理解为多种形态,没错,就是一个方法能表现出不同的形态。

同一操作(方法)作用于不同的对象,可以有不同的解释,产生不同的结果,而无须明确知道这个子类实际上是什么。将其上升到父类与子类的层面时,就是父类的引用指向了子类的对象。

前面所讲的封装和继承都是为多态服务的

然而, Python属于鸭子类型,大意是:当看到一只鸟走起来像鸭子、游泳起来像鸭子、叫起来也像鸭子,那么这只鸟就可以被称为鸭子。

python中的鸭子类型允许我们使用任何提供所需方法的对象,而不需要迫使它成为一个子类。

多态三大前提:

要有继承;

重写;

父类引用指向子类对象。

class Animal(object):

def __init__(self, name): # 初始化方法

self.name = name # 初始化类变量

class Dog(Animal): # 继承Animal的 Dog

def __init__(self, name):

self.name = name #

def cry(self):

print("%s汪汪叫" % self.name)

class Cat(Animal): # 继承Animal的 Cat

def __init__(self, name):

self.name = name

def cry(self):

print("%s喵喵叫" % self.name)

def DuoTai(child):

print(child.cry())

child1 = Dog('邻居家的狗') # 封装到子类对象 info

DuoTai(child1) # 多态展示Cry方法,重写

child2 = Cat('邻居家的猫') # 封装到子类对象 info

DuoTai(child2) # 多态展示Cry方法, 重写

复制代码

三、进阶

3.1 基础重载方法

0ad6bcf7546f5e2539372b384994289a.png

3.2 下划线说明

foo:

定义的是特殊方法,一般是系统定义名字 ,类似 init() 之类的。

_foo:

以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *

_ _ foo:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值