python学习笔记:第七章面向对象

这篇具有很好参考价值的文章主要介绍了python学习笔记:第七章面向对象。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

与java类似,python作为一种面向对象的编程语言,也可以创建自定义的对象和类。

它的特性主要有:继承,封装,多态,方法,属性,超类

1.变量的作用域

c = 50      #全局变量, 作用域为整个模块,若被引用,可作用域整个包
  
def plus(x,y):
    c = x + y           # 局部变量, 为函数中定义的变量,在函数外可被引用
    print(c)
  
plus(1,2)
print(c)                # 函数内部定义的变量只作用与函数内部
>
3 
50

两者转换

def demo():
    global c        # global  定义一个全局变量,  可被引用 
    c = 2

demo()          
print(c)        # 先调用函数,再输出
> 2

2.类与构造方法

每个类对应每个对象,下面有类变量

起到封装变量,封装函数,代码的作用

2.1定义一个类

格式

class 类名:  #首字母最好大写
	代码块
class Student:               #命名,首字母大写
    name = '名字'
    age = 0

    def __init__(self):
        #构造函数, 无需调用直接运行  在给对象的赋值语句中即可运行
        print('在创建类对象时先运行构造函数')
        return None     #只能返回none 不可人为指定

    def grape(self, score): # 与java类似,self指向对象本身
        print(self.name + "的成绩是" + str(score))

bob = Student()
> 在创建类对象时先运行构造函数

实例化类,给类赋值

student = Student()              #实例化
student.grape(100)             #调用
>
在创建类对象时先运行构造函数
bob的成绩是100

2.2构造函数

在创建对象时,就会被调用运行

可以没有

可以在构造函数中, 初始化对象的属性

  • 不需要传参的构造函数
def __init__(self):
	pass
  • 需要传参的构造函数,需要有self,指向对象,与类无关
def __init__(self, name, age):
	pass
  • 上面两种形式可以同时存在,也可以只存在一种

2.3关于self

  • self只有在类的方法中才会有,独立的函数或方法是不必带有self的
  • self在定义类的方法时是必须有的,但在调用时不必传入相应的参数
  • self名称不是必须的,在python中self不是关键词,你可以定义成a或b或其它名字都可以
  • self指向对象本身
  • 调用构造函数时,可以通过 在类后面()的方式调用
class Dog:
    def __init__(self):
        print('This is a dog.')

dog()
> This is a dog.

调用实例方法时,通过对象调用

class School:               #命名,首字母大写
    name = '未定义'                 
    age = 0                   

    def __init__(self,name1,age1):             
        name = name1
        print(name)                   
        age =  age1                   
        return None     #只能返回none 不可人为指定

#调用构造函数时,通过  在类后面()的方式调用
#调用实例方法时,通过对象调用
School1 = School(name1 = '中华小学',age1 = '80')
School2 = School(name1 = '安徽小学',age1 = '70')

类中函数的实例变量与实参不同

def __init__(self,name1,age1):             
        #可在()内,  加变量    在引用时,定义变量的值
        #通过 self 来保存特征值
        self.name = name1              
        #通过 self 来定义实例变量和访问实例变量
        self.age =  age1       
        #self.变量属性 = 变量名(形参)

2.5实例变量与类变量

实例变量:

顾名思义,通过创建对象实例化产生,通过对象进行引用。在类内部表现为:self.变量名

类变量:直接与类本身相关,与对象无关,直接在类中被定义,可以转变为实例变量

当出现对象名.变量名 引用变量时,先对类里面的实例变量进行寻找,若无,则再去类变量中寻找

class Dog:
	name = 'None' # 类变量
	nickname = 'Name' # 类变量
	def __init__(self, name):  # 这里name为函数形参
		self.name = name  # 赋值实例变量

bob = dog('bobo')
print(bob.name)
print(bob.nickname)
>
bobo
None

一个例子

class School():               #命名,首字母大写
    name = '未定义'                 
    age = 0          
    sum = 0                    # 与类相关的变量
    color = 'yellow'
    squire = '面积'

    def __init__(self,name1,age1,color1,squire1):            
        
        name = name1                    
        age =  age1     
        self.color = color1
        self.squire = squire1
        return None     

School1 = School(name1 = '中华小学',age1 = '80',color1 = 'blue',squire1 = '1000')
print(School1.name,'    ', School1.age)     #此时打印出了 类变量 (先在  实例变量  中查找,无, 则到类变量中找)
print(School1.__dict__)                     #以字典的形式输出 School1 的变量
print(School.name)     
print(School1.color,'    ', School1.squire) 
print(School.__dict__)   

2.4实例方法

格式

def 方法名(self, 形参): # self必须有 形参可有可无
    代码块

2.5类方法与类变量

类方法的基本格式

@classmethod            #为装饰器
def plus_sum(cls):      #cls  为class 的缩写 作用与self类似
    pass

类变量:只与类相关

__class__.变量名 或者是在类方法中的 cls.变量名   
两者虽然表现形式不同,但为同一变量  `is`

下面的例子,很好地通过实例变量与类变量进行班级人数和年龄的统计

class classroom:
sum = 0
    age = 0
    def __init__(self,name,age):
        self.__class__.sum += 1   # 总人数加一
        self.age = age
        self.__class__.age += self.age  # 学生年龄和
        age = self.__class__.age/self.__class__.sum
        print('当前班级学生总人数为:' + str(self.__class__.sum))
        print('当前班级的平均年龄为:' + str(age))

    @classmethod  
    def plus_sum(cls): # 利用类变量进行加和
        print('班级总人数为: ' + str(cls.sum))  

classroom.student1 = classroom(name = '憨批', age = 10)
classroom.student2 = classroom(name = '小逗比', age = 9)  
classroom.student3 = classroom(name = '土豆',age = 8)           
classroom.plus_sum()                # 通过类来调用 方法
classroom.student1.plus_sum()       # 通过对象来调用方法

2.6静态方法

  • 用的不多 与类 实例方法 关联不大 与普通函数区别不大

格式:文章来源地址https://www.toymoban.com/news/detail-547120.html

@staticmethod       # 装饰器
def add(x,y):
    print('This is a static method')
  • 类中的静态方法,可以访问类变量,对于实例变量和其他函数变量,无法访问
  • 类中的静态方法,可以通过类直接调用,无需实例化
class Company:
    sum = 0
    bass_name = '刘大钞'
    def __init__(self,staff_a,staff_b,staff_c):
        self.staff_a = staff_a
        self.staff_b = staff_b
        self.staff_c = staff_c
        Company.sum = staff_a + staff_b + staff_c
    
    @staticmethod                   # 装饰器
    def add(x,y):                       # 与类方法实例方法不同,()内无需强制添加变量
        print('This is a method')
        print(Company.bass_name)        #  正常引用类变量
        print(x + y)                #引用形参
        print(self.staff_a)             #报错
        print(staff_a)                  #报错
    
    Company1 = Company(staff_a = 10,staff_b = 20,staff_c = 30)
    Company1.add(1,2)
    Company.add(1,2)                #可正常被调用

到了这里,关于python学习笔记:第七章面向对象的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [JavaScript] 第七章 对象

    🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 [Java项目实战] 介绍Java组件安装、使用;手写框架等 [Aws服务器实战] Aws Linux服务器上操作nginx、git、JDK、Vue等 [Java微服务

    2024年02月02日
    浏览(132)
  • 面向企业的 ChatGPT 究极手册:第七章到第八章

    原文:Ultimate ChatGPT Handbook for Enterprises 译者:飞龙 协议:CC BY-NC-SA 4.0 在前面的章节中,我们已经踏上了一段启发之旅,探索了 GPT 模型的基础、它们的 AI 能力和潜在应用,以及它们在改变商业格局中的作用。我们还探讨了一系列解决方案架构的设计模式、有效的提示和基于

    2024年01月20日
    浏览(46)
  • 【高数笔记】第七章 微分方程

    微分方程 :含有导数的方程叫微分方程 阶 :微分方程的导数最高是几阶导数。微分方程中所出现的未知函数的最高阶导数的阶数,叫做微分方程的阶 解 :微分方程的解是一个函数,将这个函数代入,方程为恒等式。 通解 :如果微分方程的解中含有任意常数,且任意常数的

    2024年02月08日
    浏览(83)
  • 信息技术导论 第七章 区块链 笔记

    7.1.1   区块链基本概念和特征 1、区块链的基本概念 从科技层面来看,区块链涉及数学、密码学、互联网和计算机编程等很多科学技术问题。从应用视角来看,简单来说,区块链是一个分布式的共享账本和数据库,具有去中心化、不可算改、全程留痕、可以追溯,集体维护、

    2024年02月07日
    浏览(43)
  • 【现代控制理论笔记】——第七章:稳定性

    1. 稳定性的概述 系统的稳定性分为基于输入输出描述的 外部稳定性 和基于状态空间描述的 内部稳定性 。 1.1 外部稳定性(BIBO稳定): 任何一个有界输入 u ( t ) u(t) u ( t ) ,对应的输出 y ( t ) y(t) y ( t ) 均有界。 ∣ ∣ u ( t ) ∣ ∣ ≤ β ∞ ||u(t)||leq betainfty ∣∣ u ( t ) ∣∣

    2024年01月22日
    浏览(49)
  • python第七章(字典)

    一。字典(类型为dict)的特点: 1.符号为大括号 2.数据为键值对形式出现 3.各个键值对之间以逗号隔开 格式:str1={\\\'name\\\':\\\'Tom\\\'}  name相当于键值(key),Tom相当于值 二。空字典的创建方法 三。字典的基本操作(增删改查) 1.字典的增加操作:字典序列[key] = 值 注意点:如果存

    2024年01月24日
    浏览(57)
  • Vue笔记第七章vue3【动力节点】

    vue3官网地址 https://cn.vuejs.org/ vue3发布时间 2020年9月18日。 翻译: 今天,我们很自豪地宣布Vue.js 3.0“海贼王”正式发布。这个新的主要版本的框架提供了改进的性能 斜体样式 、更小的捆绑包大小、更好的TypeScript集成、用于处理大规模用例的新API,以及为框架未来的长期迭代

    2024年02月02日
    浏览(50)
  • SVM——《统计学习方法第七章》

    在第二章中我们学过感知机,它是最小化所有误分类点到超平面的距离之和, M 为误分类点的集合,得到的分离超平面是不唯一的。 min ⁡ ω , b [ − ∑ x i ∈ M y i ( ω ⋅ x i + b ) ] min_{omega,b}[-sum_{x_i in M}y_i (omegacdot x_i+b)] ω , b min ​ [ − x i ​ ∈ M ∑ ​ y i ​ ( ω ⋅ x i ​

    2024年02月08日
    浏览(50)
  • go 笔记 第七章 golang 的函数 func 方法

    声明函数 func 函数名(入参1 类型, 入参2 类型,… )(出参1 类型, 出参2 类型…){ 函数体,写逻辑 出参一定要全部 return, return 出参 } 函数内部不可以声明带名字的函数,可以声明匿名函数和自执行函数 函数名大写可以被其他包调用,小写私有,变量名也是一样 return 后面可以不

    2024年02月15日
    浏览(44)
  • Python之第七章 函数 --- 基础

    目录 Python之第七章 函数 --- 基本 1.模块化程序设计 1.基本思想 2.特点 2.定义函数 1.格式: 2.函数名: 3.形式参数: 4.函数体 ​编辑 3.函数调用 1.作用 2.格式 3.调用方式 4.实例 4.return语句 1.作用 2.注意 3.return可以返回任意Python的对象 5.函数参数 1.位置参数 ​2.参数 3.默

    2024年02月09日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包