python笔记11面向对象思想

先声明一下
各位大佬,这是我的笔记。
如有错误,恳请指正。
另外,感谢您的观看,谢谢啦!

面向对象 :将数据与函数绑定在一起,进行封装,减少重复代码的重写过程

面向过程 : 根据业务逻辑编程

类:一种抽象概念,类别,由多个具有类似属性的对象定义的。

对象:具体存在,属于类,属性是它的描述,方法是它的行为

这样肯定解释肯定不清晰,举几个例子就好了,

类:游戏,汽车,鱼

对象:lol,保时捷帕拉梅拉,小丑鱼

类的格式

class Ty1():num1 = 10str1 = 'str'def fc1(self):str2='2'print("--1--")def fc2(self):print("--2--")q = Ty1()
print(q.num1)
print(q.str1)
q.fc1()
q.fc2()
10
str
--1--
--2--

num1,str1,str2是这个类的属性

fc1,fc2是这个类的方法

魔法方法__init__()

class Test():def __init__():print('test')q = Test()
test

__init__()会在函数实例化(q = Test())时__自动运行__

该函数常常用来初始化一些属性,和在实例化时就给一些属性赋值

class Student():def __init__(self,english,math,chinese):self.str1 = '英语'self.num_e = englishself.str2 = '数学'self.num_m = mathself.str3 = '语文'self.chinese = chinesedef print_grade(self):print(f'该学生的成绩为{self.str1}{self.num_e}\t{self.str2}{self.num_m}\t{self.str3}{self.chinese}\t')
q = Student(90,89,79)
q.print_grade()
该学生的成绩为英语90  数学89 语文79

关于这个魔法方法还有一点要注意

在init方法内的属性,外部是可以在已经实例化的情况下直接访问的

而在其他方法内的属性就要先访问这个方法,才能再访问相应的属性

class Student():def __init__(self,english,math,chinese):self.str1 = '英语'self.num_e = englishself.str2 = '数学'self.num_m = mathself.str3 = '语文'self.chinese = chinesedef print_grade(self):self.num2 = 3print(f'该学生的成绩为{self.str1}{self.num_e}\t{self.str2}{self.num_m}\t{self.str3}{self.chinese}\t')
q = Student(90,89,79)
print(q.chinese)print(q.num2)q.print_grade()
AttributeError: 'Student' object has no attribute 'num2'
改成这样
print(q.chinese)q.print_grade()
print(q.num2)
79
该学生的成绩为英语90 数学89 语文79
3

还有一点要注意:init内部__不可以用return语句__

__str__()

class Student():def __init__(self,english,math,chinese):self.str1 = '英语'self.num_e = englishself.str2 = '数学'self.num_m = mathself.str3 = '语文'self.chinese = chinesedef print_grade(self):self.num2 = 3print(f'该学生的成绩为{self.str1}{self.num_e}\t{self.str2}{self.num_m}\t{self.str3}{self.chinese}\t')
q = Student(90,89,79)
print(q)
<__main__.Student object at 0x000001EDD3498E80>

在正常调用对象变量时,打印值为一个地址,可是我不想让他显示一个地址,这时候就可以用__str__()

它的作用是当对象变量被访问时返回一个字符串,注意一定是字符串。

class Student():def __init__(self,english,math,chinese):self.str1 = '英语'self.num_e = englishself.str2 = '数学'self.num_m = mathself.str3 = '语文'self.chinese = chinesedef print_grade(self):self.num2 = 3print(f'该学生的成绩为{self.str1}{self.num_e}\t{self.str2}{self.num_m}\t{self.str3}{self.chinese}\t')def __str__(self):return '你成功返回我了'
q = Student(90,89,79)
print(q)
你成功返回我了

不过它还有以下两种形式

    def __str__(self):return str(self.chinese)
q = Student(90,89,79)
print(q)
    def __str__(self):return self.chinese
q = Student(90,89,79)
print(q.__str__())

结果都是79

属性和数据的私有化

有些属性和方法我们不希望直接被访问到,我们可以在它的名字前加上__把他变成私有

class test():def __init__(self):self.__str1 = '隐私'
q = test()
print(q.str1)
AttributeError: 'test' object has no attribute 'str1'

换成这句也是访问不了

print(q.__str1)
AttributeError: 'test' object has no attribute '__str1'

哪这个值就无法访问了吗?其实不是,在外部我无法访问你,哪我就在内部访问你

class test():def __init__(self):self.__str1 = '隐私'def disclose(self):print(f'不,你没有{self.__str1}')
q = test()
q.disclose()
不,你没有隐私

而私有函数也是一样的方法

class test():def __init__(self):self.str1 = '1'def __underclosed(self):print('--1--')
q = test()
q.underclosed()

销毁对象

del 要销毁的对象

fc1 = text()
del fc1

在类的方法里调用其他方法

class test0():def test01(self):print('test01')def test11(self):self.test01()

一定要加上self.别问我怎末知道的

python笔记11面向对象相关推荐

  1. 初学者python笔记(面向对象编程、类与对象)

    文章目录 面向对象设计 类与对象的概念 1.类与对象的本质 2.面向对象设计 到 面向对象编程 3.类实例化 4.例如一个学校类 面向对象编程 1.案例 2.面向对象语言和面向对象编程之间的关系 3. ...

  2. python笔记02_面向对象编程和面向对象高级编程

    面向对象编程 变量名类似__xxx__的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是private变量,所以,不能用__name__.__score__这样 ...

  3. Python笔记6 面向对象

    类的定义 面向对象两个核心:类.对象 在python中使用class定义类: class Student(): #类名最好定义为大写开头name = '' #数据成员age = 0def print_ ...

  4. python中级11面向对象中

    1 特殊方法 ●在类中可以定义一些特殊方法也称为魔术方法 ●特殊方法都是形如__xxx__( )这种形式 (注意是两个_ 下划线) ●特殊方法不需要我们调用,特殊方方法会在特定时候自动调用 问题:#目 ...

  5. python是一门面向对象的高级_9.Python笔记之面向对象高级部分

    类的成员 类的成员可以分为三大类:字段.方法和属性 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存中就有多少个普通字段.而其他的成员,则都是保存在类中,即:无论对象的 ...

  6. Python笔记⑥11.07

    一.类和对象 ➢ 类 是对一群具有相同特征或者行为的事物的一个统称, ➢ 对象 是由类创建出来的一个具体 实例,可以直接使用 ➢ 类 只有一个,而 对象 可以有很多个 ➢ 不同的对象 之间 属性 可能 ...

  7. 【Python笔记11】

    一.类方法 二.静态方法 三.__del__方法(析构函数) 四.__call__方法 五.重名方法 六.方法的动态性 一.类方法 1.格式: @classmethod def 类方法名(cls[,参 ...

  8. python笔记之面向对象

    n [31]: class A:...: def fun(self):...: print "我是Andrew...."...: In [32]: class B:...: def ...

  9. 初学者python笔记(静态属性、类方法、静态方法、类的组合)

    文章目录 类的三大方法 1.静态属性 2.类方法.静态方法 3.三大方法总结 类的组合 1.用法分析 2.面试案例分析 本篇文章是上一篇:初学者python笔记(面向对象编程.类与对象)的后续篇,是关 ...

最新文章

  1. 独家 | 准确度VS速度——数据科学家能从搜索中学到什么?(附链接)
  2. re匹配字符串的中间一段_爬虫利器之 re 模块
  3. 向 Android 4.0 彻底说再见!
  4. 一个肉夹馍引起的思考
  5. 一文带你了解微信/支付宝支付的相关概念
  6. android 删除开机动画,Android开机logo和开机动画的修改
  7. 匈牙利算法解决指派问题
  8. sql 字段逗号分割
  9. Java学习笔记(24)——正则表达式
  10. Win7 开机后3分钟内硬盘等狂闪解决办法
  11. CentOS安装Nginx 以及日志管理
  12. word文档批量处理表格
  13. PTCHECK查重好渣啊,还没有paperyy好用
  14. NLP模型笔记2022-11:CTB5和CTB8数据集预处理 【PennTreebank 和Chinese Treebank】
  15. 计算机组成原理实验报告JMPR,计算机组成原理实验四:组合逻辑控制器部件教学实验...
  16. Pygame实战之外星人入侵NO.11——设置开始按钮
  17. 解决MyEclipse中resetting selection长耗时的问题
  18. 【渝粤题库】陕西师范大学180204市场营销学 作业(高起本)
  19. selenium直接刚淘宝登录
  20. Linux下smba服务端的搭建和客户端的使用

热门文章

  1. python判断数字位数_python求数字位数的方法
  2. Web前端期末大作业--响应式网络科技公司网页设计(IT网络主题-HTML+CSS+JavaScript)实现
  3. 渗透测试|网络安全常用靶场
  4. 数字化时代-6:从经济体所有制看赚钱的规模
  5. 计算机新教师培训自我评价,新教师培训自我评价
  6. 【Proteus仿真】【STM32单片机】比赛计时计分系统设计
  7. SpringBoot 多数据源
  8. AndroidStudio中运行按钮是灰色的
  9. 数据湖架构开发-Hudi入门教程
  10. C++ has-a关系之包含