python学习笔记(面向对象,类)

本文深入探讨了Python中的面向对象编程,包括类的定义、调用方法,以及方法与函数的区别。详细阐述了类变量、实例变量、构造函数`__init__`的作用,同时解释了类方法、静态方法的使用。还讨论了成员的可见性,强调了内部调用与外部调用的差异以及公开与私有成员的概念。通过对这些概念的理解,有助于提升Python编程能力。
摘要由CSDN通过智能技术生成

一.类的定义
 

1.类的基本结构

#命名规则: 驼峰法
class Student():  # 使用class 定义类
    a= 1 # 变量
    name = '小明'
    def aa(self): # 函数
        print(self.name)

函数中需要写self

函数中调用类中变量  使用 self.变量名

2.类的调用

要是使用类,需要实例化(使用类模版,实现具体实现的对象)

# 实例化 student类
student = Student()
# 调用类下面的方法
student.aa()

类只负责定义, 而不负责执行(运行和调用这个类,要在类的外部)

二.方法和函数的区别

方法: 面向对象中的方法, 面向对象关注的是;函数:定义在模块中

变量,定义在模块中 称之为变量;定义在类中称之为 数据成员

没有必要特别强调区别

三.类与对象

类与对象的关键点在是否实例化

类是现实世界或思维世界中的实体在计算机中的反应

它将数据以及这些数据上的操作封装在一起

面向对象设计,从行为与特征设计类

类像是一个模版,通过类可以产生无数对象

对象代表一个具体的,是对类的实现

四.构造函数 __init__

class Student: 
    name = ''
    age = 0
    
    def __init__(self):
        # 构造函数 inti
        ...
  1. 构造函数是在类实例化的时候自动调用
  2. 构造函数不能返回值, 只能返回None

作用:

让模版构造不同的函数,初始化对象的特征,属性

class Student:
    name = ''
    age = 0

    def __init__(self, name, age):
         # 构造函数
        self.name = name
        self.age = 0
        print(11)

student = Student('小花',11)
print(student.name)

五.类变量和实例变量

类变量:类变量就是和类相关的变量,类和具体的对象无关
实例变量:实例变量就是和对象相关联的

python 中,self后面跟的才是实例变量

写在类中的变量是类变量

class Student:
    name = ''   # 类变量,  名字属性对学生类,实际上是没有太大的意义,应写在实例变量中
    sum # 一个班级里所有学生的总数, 这个就比较有意义

    def __init__(self, name, age):
         # 构造函数
        self.name = name   # 实例变量
        self.age = 0
        print(11)

1.类与对象的变量查找顺序

对象变量-->类变量-->父类

self  代表 调用该方法的对象

2.在实例方法中访问实例变量与类变量 

构造函数(自动执行),可以看成是一个特别的 实例方法.
区别:
1.调用方式不同:
        调用构造函数: 实例(对象)名 = 类名(参数1,参数2)
                例如: student1 = Student('石敢当' ,18)
        调用普通方法: 实例(对象)名.实例方法名
                例如: student1.dohomework()
2.意义不一样(特征&行为):
        构造函数的作用:初始化类的各种特征
        实例方法的作用:描述类的行为
3.访问方式:
        实例方法访问 实例的变量:
                ①self.变量名
        实例方法访问 类的变量:
                ① self.__class__.变量名
                ② 类名.变量名

六. 类方法

1.定义类变量的时候,要加入cls,而且在类变量上方加入@classmethod,调用的时候同样是类.
2.cls代表就是类,self 代表的实例对象,  cls可以改成别的

尽量不要使用对象调用类方法,虽然可以调用

class Student:
    sum1 = 0
    @classmethod
    def plus_sun(cls):
        """
        类方法
        :return:
        """ 
        cls.sum1 +=1
        print(cls)

# 调用
Student.plus_sun()

七. 静态方法

class Student:
    # 定义
    @staticmethod  # 静态方法装饰器
    def add(x,y):  # 静态方法可以没有self或者cls
        print('这是一个静态方法')

# 调用:
student1 = Student()
# 1.对象调用
student1.add(1,2)
# 2.类调用
Student.add(1,2)

八.成员的可见性

1.内部调用与外部调用

        内部调用指在类的内部访问调用

        外部调用是指在类的外部访问调用

变量、方法等都有内部调用与外部调用

编码小建议: 不要在类的外面直接对类变量赋值, 应该通过在方法,方法中添加校验,保护数据的安全

        自己编码的情况下,为了省事,可以这样直接赋值

2. 公开与私有,

public 公开的           private 私有的

python默认类中的变量与方法是公开的,在之前加上__(双下划线)后认为是私有的

类的外部不能访问私有方法与变量

原理:

        定义私有变量后,   python会将私有变量名改成  _类名__私有名,所以在外部访问不到, 

        所以如果在外面  想要操作私有变量,可以用 _类名__私有名 的方式

由于python属于动态语言, 所以从外部给私有变量赋值,本质上是给对象添加了一个新的属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值