文章目录

  • 类和对象
    • 一.对象=属性+方法
    • 二.面向对象编程
    • 三.继承
    • 四.多重继承
    • 五.组合
    • 六.类,类对象和实例对象
    • 七.绑定
    • 八.一些相关的BIF
  • 魔法方法(1)
    • 一.构造和析构
    • 二.算术运算
  • 第一次考核总结

类和对象

一.对象=属性+方法

一个对象的特征称为"属性",一个对象的行为称为"方法"。

class Turtle:color ='green'weight =10legs =4shell =Truemonth ='大嘴'def climb(self):print("我正在很努力的向前爬...")def run(self):print("我正在飞快的向前跑...")def bite(self):print("咬死你咬死你!!")def eat(self):print("有得吃,真满足^_^")def sleep(self):print("困了,睡觉,晚安,zzz")

二.面向对象编程

1.self:由同一个类可以生成无数对象,当一个对象的方法被调用的时候,对象会将自身的引用作为第一个参数传给该方法。

class Ball:def setName(self,name):self.name = namedef kick(self):print("我叫%s,噢~谁·踢我?!"%self.name)
a =Ball()
a.setName("飞火流星")
a.kick()
我叫飞火流星,噢~谁·踢我?!

2.init():
init()方法称为构造方法。

class Potato:def __init__(self,name):self.name=namedef kick(self):print("我叫%s,噢~谁·踢我?!"%self.name)
p =Potato("土豆“)
p.kick()
我叫土豆,噢~谁·踢我?!

3.私有变量
在变量名或函数名前加上"__",这个函数就会成为私有的了。

class Person:__name ="小甲鱼"
p = Person()
p.name
Traceback (most recent call last):File "<pyshell#4>", line 1, in <module>p.name
AttributeError: 'Person' object has no attribute 'name'

三.继承

1.被继承的类称为基类,父类或超类;继承者称为子类,一个子类可以继承它的父类的任何属性和方法。

class Parent:def hello(self):print("正在调用父类的方法...")
class Child(Parent):passp=Parent()
p.hello()
正在调用父类的方法...
c =Child()
c.hello()
正在调用父类的方法...

2.如果子类中定义与父类同名的方法或属性,则会自动覆盖父类对应的方法和属性。
3.使用super函数
super函数的"超级"之处在于:不需要明确任何基类的名字,它会自动找出所有基类以及对应的方法。

四.多重继承

class Base1:def foo1(self):print("我是foo1,我在Base1中...")class Base2:def foo2(self):print("我是foo2,我在Base2中...")class C(Base1,Base2):passc =C()
c.foo1()
我是foo1,我在Base1中...
c.foo2()
我是foo2,我在Base2中...

五.组合

class Turtle:def __init__(self,x):self.num =x
class Fish:def __init__(self,x):self.num =x
class Pool:def __init__(self,x,y):self.turtle =Turtle(x)self.fish =Fish(y)def print_num(self):print("水池里共有乌龟%d只,小鱼%d条!"%(self.turtle.num,self.fish.num))

六.类,类对象和实例对象

class C:count =0
a =C()
b =C()
c =C()
print(a.count,b.count,c.count)
0 0 0
c.count+=10
print(a.count,b.count,c.count)
0 0 10
C.count+=100
print(a.count,b.count,c.count)
100,100,10

类中定义的属性是静态变量,类的属性是与类对象进行绑定,并不会依赖任何实例对象。如果属性的名字与方法相同时,属性会覆盖方法。

七.绑定

1.__dict__属性由一个字典组成,字典中仅有实列对象的属性,不显示类属性和特殊属性,键表示的是属性名,值表示属性相应的数据值。

dd.setXY(4,5)
dd.__dict__
('x':4,'y':5)

八.一些相关的BIF

1.issubclass(class,classinfo)
如果第一个参数(class)是第二个参数(classinfo)的一个子类,则返回True,否则返回False。

class A:pass
class B:pass
issubclass(B,A)
True
issubclass(B,B)
True
issubclass(B,object)
True
class C:pass
issubclass(B,C)
False

2.isinstance(object,classinfo)
如果第一个参数(object)是第二个参数(classinfo)的实列对象,则返回True,否则返回False。

issubclass(B,C)
False
b1 =B()
isinstance(b1,B)
True
isinstance(b1,C)
False

3.hasattr(object,name)
attr是属性的意思,hasattr()函数的作用就是测试一个对象里是否有指定的属性。第一个参数(object)是对象,第二个参数(name)是属性名。

class C:def __init__(self,x=0):self.x=x
c1=C()
hasattr(c1,'x')
True

4.get(object,name[,default])
返回对象指定的属性值,如果指定的属性不存在,则返回default(可选参数)的值;若没有设置default参数,则抛出异常。
5.setattr(object,name,value)
与getattr()对应,setattr()可以设置对象中指定属性的值,如果指定属性的值不存在,则会新建属性并赋值。
6.delattr(object,name)
与setattr()相反,delattr()用于删除对象中指定的属性,如果属性不存在,则抛出异常。
7.property()
property()的作用是通过属性来设置属性。

class C:def __init__(self,size =10):self.size =sizedef getSize(self):return self.sizedef setSize(self,value):self.size =valuedef delSize(self):del self.sizex =property(getSize,setSize,delSize)

魔法方法(1)

一.构造和析构

1.init(self[,…])

class Rectangle:def __init__(self,x,y):self.x=xself.y=ydef getPeri(self):return (self.x+self.y) * 2def getArea(self):return self.x * self.y
rect =REctange(3,4)
rect.getPeri()
14
rect.getArea()
12

init()方法返回的值一定是None。
2.new(cls[,…])
new()是在一个对象实例化时候调用的第一个方法,它的第一个参数不是self而是这个类(cls),而其他参数会直接传递给__init__()f方法。

class CapStr(str):def __new__(cls,string):string = string.upper()return str.__new__(cls,string)
a =CapStr("I Love FishC.com")
a
'I LOVE FISHC.COM'

3.del(self)
del()方法是当垃圾回收机制回收这个对象的时候调用的。

二.算术运算

add(self,other) 定义加法的行为:+
sub(self,other) 定义减法的行为:-
mul(self,other) 定义乘法的行为:*
truediv(self,other) 定义真除法的行为:/
floordiv(self,other) 定义整数除法的行为://
mod(self,other) 定义取模算法的行为:%
反运算
radd(self,other) 定义加法的行为:+
rsub(self,other) 定义减法的行为:-
rmul(self,other) 定义乘法的行为:*
rtruediv(self,other) 定义真除法的行为:/
rfloordiv(self,other) 定义整数除法的行为://
rmod(self,other) 定义取模算法的行为:%

class New_int(int):def __add__(self,other):return int(self)-int(other)def __sub__(self,other):return int(self)+int(other)
a =New_int(8)
b =New_int(9)
print(b+a)
print(a-b)
1
17       class Nint(int):def __radd__(self,other):return int.__rsub__(self,other)
a =Nint(5)
b =Nint(3)
print(a+b)
print(1+b)
8
-2class Nint(int):def __rsub__(self,other):return int.__sub__(self,other)
a =Nint(5)
print(3-a)
2

第一次考核总结

上个周末小组进行了第一次考核,可以说是考的非常不理想,感觉自己也学习了,但还是好多东西都记不住。每次敲那些代码,不是对着书敲,就是上网搜代码,然后自己去敲,其时这样并没有让我记住,反而只是在浪费时间。我平时也不太喜欢看视频,只是看看书上,做做学长发的练习题,通过这次考试我发现,这样做并不能提高我的成绩,接下来的一段时间内,我不仅要把书上的学会,还要抽空的时候去看看有关python基础的视频,跟着他们学习学习。而且对于一些代码,我要去理解它的意思,然后记住它,方便后面的应用。
对于上一阶段的学习我也做了一些总结,首先就是我在小组待的时间并不是很长,最近也因为比较忙经常请假,不去小组学习。在接下来,我一定减少请假的次数,早点去小组学习,晚上可以留在小组多学习一会儿。其次就是,我也要适当改变自己的学习方法,调整自己的学习态度,不能只停留在课本上,要多做一些练习题,每天不仅要学习新的知识也要将以前的知识点复习复习。最后就是,在接下来的时间里,我一定会控制住自己,不让自己在小组学习的时候跑神,玩手机,一定要注意力集中,只有这样,我才能不断的提升自己,成为像学长一样优秀的人。
我相信,在接下来的一段时间内,我一定会更加努力的去学习,提升自己,不再浪费在小组学习的机会,让自己的付出得到令人满意的回报。

Python基础——类和对象与魔法方法相关推荐

  1. Python基础(类与对象)

    Python基础(类与对象) 一.编程的两大思想 面向过程和面向对象 面向过程 面向对象 区别 事物比较简单,可以用线性的思维去解决 事物比较复杂,使用简单的线性思维无法解决 共同点:面向对象和面向过 ...

  2. Python_Task07:类、对象与魔法方法

    类.对象与魔法方法 学习教程 类与对象 1. 对象 = 属性 + 方法 2. self 是什么? 3. Python 的魔法方法 4. 公有和私有 5. 继承 6. 组合 7. 类.类对象和实例对象 ...

  3. Python基础——类与对象

    Python基础--类与对象 Python基础--类与对象 类与对象 数据类型 对象 类的创建 创建语法 类的创建 对象的创建 对象调用类中的内容 类属性,类方法,静态方法 类属性 访问类属性 类方法 ...

  4. Python基础教程-第9章-魔法方法、特性和迭代器

    在Python中,有些名称很特别,开头和结尾都是两个下划线.你在本书前面已经见过一些, 如__future__. 在这样的名称中,很大一部分都是魔法(特殊)方法的名称.如果你的对象实现了这些方法,它们 ...

  5. python基础------类与对象之间的关系,封装、继承、多态

    类与对象.封装.继承 练习1 # 1.写一个员工类BwEmployee class BwEmployee(object): # (2)添加构造方法,包含5个形参,保存外部传入值,分别给以下实例属性赋值 ...

  6. Python的类和对象的介绍,定义类和对象,定义实例方法和属性以及Python中的魔法方法

    Day09新手小白学python 第九节 Python的类和对象的介绍,定义类和对象,定义实例方法和属性以及Python中的魔法方法 目录 Day09新手小白学python 前言 一.面向对象介绍 二 ...

  7. Python类属性访问的魔法方法

    Python类属性访问的魔法方法: 1. __getattr__(self, name) - 定义当用户试图获取一个不存在的属性时的行为 2. __getattribute__(self, name) ...

  8. python基础类型,Python基础-类

    Python基础-类 @(Python)[python, python基础] 写在前面 如非特别说明,下文均基于Python3 摘要 本文重点讲述如何创建和使用Python类,绑定方法与非绑定方法的区 ...

  9. python笔记14介绍几个魔法方法

    python笔记14介绍几个魔法方法 先声明一下 各位大佬,这是我的笔记. 如有错误,恳请指正. 另外,感谢您的观看,谢谢啦! (1).__doc__ 输出对应的函数,类的说明文档 print(pri ...

  10. python的类和对象_Python类与对象实验

    一.任务描述 本实验任务主要对Python类与对象进行一些基本操作,通过完成本实验任务,要求学生熟练掌握Python类与对象的关系,并对Python类与对象的基本操作进行整理并填写工作任务报告. 二. ...

最新文章

  1. 想成为别人眼里的Python大牛,就必不可少的书单
  2. python读取文件类型_python准确判断文件类型
  3. STL 之includes,set_intersection,set_union,set_difference,set_symmetric_difference
  4. 关于mysql的cpu占用高的问题
  5. Material Design入门
  6. GenseeSDK DocView(OpenGL)引起的TextView显示黑块
  7. 自定义带标尺的seekbar
  8. 国密算法-商密认证-硬件加密-同方TF32A09-32位高速加密芯片
  9. oracle锁和kill session
  10. PageRank与社交网络模型评估
  11. 短视频解析,去水印原理整理汇总
  12. c++的学习——画矩形
  13. 婚恋职场人格-张晓文-武汉理工大学-中国MOOC-亲密关系测试题参考答案
  14. Replugin源码及原理深度剖析--唯一Hook点原理
  15. 开发QQ桌球瞄准器(2):创建项目添加主窗体
  16. 北京地铁21号线_北京地铁22号线(即平谷线)全线21站具体位置确定了!
  17. 【计算机网络】“三次握手”通俗解释
  18. vue第五天笔记02——vuex数据仓库
  19. 机器学习项目实战合集列表
  20. cpu之ALUSrc_Reg1

热门文章

  1. MIPI DSI CLK计算
  2. 商业智能应用的五大步骤
  3. 《领导力与沟通艺术》
  4. My Java 总结
  5. 优秀的博客地址-冰冻三尺非一日之寒
  6. Typora自定义主题
  7. 世外桃源六python_中土世界的世外桃源——新西兰霍比特人小镇全攻略
  8. 使用ImageMagick如何对图片进行全面压缩
  9. java stack长度_Java Stack size()用法及代码示例
  10. Masimo与Penington研究所合作,提升公众对处方阿片类药物过量危害的认识