Python学习笔记(36-40)类和对象

学习主题:类和对象
学习日期:2020-02-09
Python 版本:3.7.4
学习说明:这里很难,尤其是第一次接触面向对象这个概念,我下面写的也不是很好很明白。

第36讲 对象的概念
对一个物体怎么描述的。
比如这个物体就是狗
狗的基本特征就是,一个头,四只腿,有毛,有尾巴,等等
狗还能干什么,他能跑,能吃东西也能咬人,能用鼻子闻东西等等。

总结一下:
对象=属性+方法,这里用类可能更准确点,这么就是一个类,Class。
类的中文意思就是:物以类聚。一类人。什么的,就是拥有一样特征的人,比如说酒鬼,对,这么一类人就是爱喝酒,他们有爱喝酒这样的属性,他们有 喝酒这样的本事方法。
对象的概念其实很广的,在Python中一个函数,一个方法,一个变量什么的,都可以称为对象。所以说,Python无处不对象。

  • 定义一个类
#下面就定义了“狗”类
#记住:Python中类名首字母要大写,函数的首字母小写,这样就容易区别了
class  Dog:
    #属性
    legs=4
    head=1
    mouth=1

    #方法
    def beat(self):
        print('dog can beat ')
    def run(self):
        print('dog can run')
    def smell(self):
         print('dog can smell')
  • 调用“类”
>>> 
 RESTART: C:/Users/SNIPER/AppData/Local/Programs/Python/Python37/SniperPyWorks/game4.py 
>>> d=Dog()
>>> d
<__main__.Dog object at 0x0000000002F65B08>
>>> type(d)
<class '__main__.Dog'>
>>> d.legs
4
>>> d.beat
<bound method Dog.beat of <__main__.Dog object at 0x0000000002F65B08>>
>>> d.beat()
dog can beat 
>>> 

OO是什么?
即就是orient object 面向对象的意思

OO的特征:封装,继承,多态。

#继承举例说明
>>> class list1(list):
	pass
>>> list2=list1()
>>> list2.append(1)
>>> list2
[1]
#举例说明什么是多态
#定义一个类A
>>> class A:
	def fun(self):
		print('i am A')

#定义一个类B		
>>> class B:
	def fun(self):
		print('i am B')

		
>>> a=A()
>>> b=B()
>>> a.fun()
i am A
>>> b.fun()
i am B
#发现上面同样是fun函数,但是结果不同,所以这就是 多态

第37讲 面向对象编程

self是什么?
Python 的self 相当于 C++ self的this指针
公有和私有?
Python是伪私有

第38讲 继承
让相似的进行传递,不用再重新写。这种办法就叫做 继承。
被继承的叫:基类(或叫父类,超类 )
继承者叫:子类
用法如下:

#DerviedClassName  子类
#BaseClassName     基类(或叫父类,超类 )
class DerviedClassName(BaseClassName):
    ...

举个栗子

>>> class Parent:
	def hello(self):
		print('正在调用父类的方法...')

		
>>> class Child(Parent):
	pass

>>> p=Parent()
>>> p.hello()
正在调用父类的方法...
>>> c=Child()
>>> c.hello()
正在调用父类的方法...
>>> 

>>> class Parent:
	def hello(self):
		print('正在调用父类的方法...')

>>> class Child(Parent):
	def hello(self):
		print('正在调用  子类 的方法')

		
>>> 
>>> c=Child()
>>> c.hello()
正在调用  子类 的方法

super 函数的使用。

多继承的使用。

第39讲 一些概念

组合

>>> class Classmate:
	def __init__(self,y):
		self.num=y

		
>>> class Teacher:
	def __init__(self,x):
		self.num=x

		
>>> class Classroom:
	def __init__(self,x,y):
		self.teacher=Teacher(x)#实例化
		self.classmate=Classmate(y)#实例化
	def print_num(self):
		print('教室里面有老师 %d 名,学生 %d 名'% (self.teacher.num,self.classmate.num))

>>> classroom=Classroom(1,40)
>>> type(classroom)
<class '__main__.Classroom'>
>>> classroom.print_num
<bound method Classroom.print_num of <__main__.Classroom object at 0x0000000002FAA988>>
>>> classroom.print_num()
教室里面有老师 1 名,学生 40

以上就是一个组合的例子。就是把几个没有继承关系,一般是横向平行关系的几个类,把之实例化放在一起。

类,类对象,实例对象

#C是类 定义
>>> class C:
	num=0
#a,b为 实例对象,下面的C是类对象
>>> a=C()
>>>> a.num
0
>>> a.num=10
>>> a.num+=5
>>> a.num
15
>>> b=C()
>>> b.num
0

如果,属性和方法相同,那么会出现什么问题

>>> class C:
	def x(self): #x方法
		print('x!!')
		
>>> c=C()
>>> c.x()
x!!
>>> c.x=1
>>> c.x #查看属性
1
>>> c.x()#查看方法
Traceback (most recent call last):
  File "<pyshell#29>", line 1, in <module>
    c.x()
TypeError: 'int' object is not callable
#z这里已经报错了

因此,要注意:

  • 不要试图在一个雷里边定义出所有能想到的特性和方法,应该要利用继承和 组合机制来进行扩展。
  • 用不同的词性命名,如属性名用名词,方法用动词。

绑定
Python 严格要求方法需要有实例才能被调用,这种限制其实就是Python 所谓的绑定概念。

第40讲 一些相关的BIF

#issubclass(class,classinfo)
>>> class A:
	pass

>>> class B(A):
	pass


>>> issubclass(B,A)
True


>>> class C:
	pass

>>> issubclass(B,C)
False
#hasattr(object,name)测试一个对象里面是否有某个属性
#注 attr的全称为attribute ,属性的意思


#getattr(object,name[,default])
#setattr(object,name,value)
#property

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Python学习笔记PDF是一种学习Python编程语言的资料形式,它包含了Python的基本语法、数据类型、流程控制、函数、模块、面向对象编程、异常处理等相关内容。以下是关于Python学习笔记PDF的详细内容说明: 1. 基本语法:Python学习笔记PDF中,首先介绍了Python的基本语法,例如如何定义变量、数据类型的使用(包括整数、浮点数、字符串、列表、元组、字典等),以及如何进行算术运算、比较运算和逻辑运算。 2. 流程控制:Python学习笔记PDF中,进一步介绍了流程控制的知识,包括条件判断和循环控制。条件判断主要是通过if语句进行判断执行不同的代码块,而循环控制则通过while循环和for循环来实现重复执行一段代码。 3. 函数:Python学习笔记PDF中,对函数的概念和使用进行了详细的解释。函数是代码的封装和组织方式,通过定义函数可以提高代码的重用性和可读性。学习者将了解到如何定义函数、调用函数、函数参数的传递以及函数返回值的使用。 4. 模块:Python学习笔记PDF中,介绍了Python中的模块和包的概念。模块是一组函数、类或变量的集合,以.py文件的形式存在,可以被其他程序调用和使用。学习者将学习如何导入模块、使用模块中的函数和变量。 5. 面向对象编程:Python学习笔记PDF中,对面向对象编程进行了系统的讲解。面向对象编程是一种以对象为基本单位的编程思想,通过定义类和对象,可以更好地组织和管理代码。学习者将了解如何定义类、创建对象、封装、继承和多态的使用。 6. 异常处理:Python学习笔记PDF中,对异常处理进行了介绍。异常是程序在运行过程中出现的错误,通过捕获和处理异常,可以更好地控制程序的执行流程并提高程序的健壮性。学习者将了解到如何使用try-except语句来捕获和处理异常。 总之,Python学习笔记PDF是一份全面而详细的学习Python编程语言的资料,通过学习该资料,学习者将获得扎实的Python编程基础,并能够运用Python进行简单的程序开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三青山上种萝卜

红外图像核心算法,高质量解析

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值