1一.类和对象

1.对象=属性+方法

封装

self参数

继承             子类后面加()

class A:x=520def hello(self):print("你好,我是A")class B(A):passb=B()
b.x
520
b.hello ()
你好,我是A

覆盖

class B(A):x=880def hello(self):print("你好,我是B~")b=B()
b.x
880
b.hello()
你好,我是B~

 issubclass()                        检测一个类是否为某个类的子类

issubclass(A,B)
False

多重继承 (访问顺序,从左到右)

class  C( A,B)

组合

class Turtle:def say(self):print("朋友来了,有酒")class Cat:def say(self):print("七喜就会喵喵喵~")class Dog:def say(self):print("哦呼,我是鹿卡,是一只修勾勾~~")class Garden:t=Turtle()c=Cat()d=Dog()def say(self):self.t.say()self.c.say()self.d.say()g=Garden()
g.say()
朋友来了,有酒
七喜就会喵喵喵~
哦呼,我是鹿卡,是一只修勾勾~~

2.构造函数               __init__( ) 方法

class C:def __init__(self,x,y)SyntaxError: expected ':'
class C:def __init__(self,x,y):self.x=xself.y=ydef add(self):return self.x+self.ydef mul(self):return self.x*self.yc=C(2,3)
c.add()
5
c.mul()
6
c.__dict__
{'x': 2, 'y': 3}
d=C(4,5)
d.__dict__
{'x': 4, 'y': 5}
d.add()
9

3.重写

未绑定父类

class D(C):def __init__(self,x,y,z):C.__init__(self,x,y)self.z=zdef add(self):return C.add(self)+self.zdef mul(self):return C.mul(self)*self.zd=D(2,3,4)d.add()
9
d.mul ()
24

3.多态

class Shape:                        定义一个形状类def __init__(self,name):        构造函数self.name=name            名字def area(self):                    面积passclass Square(Shape):                    定义一个正方形类,继承shape类def __init__(self,length):super().__init__("正方形")self.length=lengthdef area(self):return self.length * self.lengthclass Circle(Shape):                    定义一个圆形类,继承shape类def __init__(self,r):super().__init__("圆形")self.r=rdef area(self):return 3.14 * self.r * self.rclass Triangle(Shape):                    定义一个三角形类,继承shape类def __init__(self,base,height):super().__init__("三角形")self.base=baseself.height=heightdef area(self):return self.base * self.height / 2s=Square(5)
c=Circle(2)
t=Triangle(3,4)
s.name
'正方形'
c.name
'圆形'
t.name
'三角形'
s.area ()
25
c.area ()
12.56
t.area ()
6.0
class Cat:def __init__(self,name,age):self.name=nameself.age=agedef intro(self):print(f"我是一只沙雕猫咪,我叫{self.name},今年{self.age}大了~~~")def say(self):print("mau~~")class Dog:def __init__(self,name,age):self.name=nameself.age=agedef intro(self):print(f"我是一只小狗狗,我叫{self.name},今年{self.age}岁~~~")def say(self):print("哦吼~~")class Pig:def __init__(self,name,age):self.name=nameself.age=agedef intro(self):print(f"我是一只小猪猪,我叫{self.name},今年{self.age}岁~~~")def say(self):print("oink~~")c=Cat("七喜","三个月")
d=Dog("鹿卡","5")
p=Pig("大肠",3)
def animal(x):x.intro()x.say()animal(c)
我是一只沙雕猫咪,我叫七喜,今年三个月大了~~~
mau~~
animal(d)
我是一只小狗狗,我叫鹿卡,今年5岁~~~
哦吼~~
animal(p)
我是一只小猪猪,我叫大肠,今年3岁~~~
oink~~

4.鸭子类型

 5.私有变量         __x

class C:def __init__(self,x):        self.__x=x def set_x(self,x):              设置变量self.__x=xdef get_x(self):                获取变量print(self.__x)c=C(250)
c.__x
Traceback (most recent call last):File "<pyshell#9>", line 1, in <module>c.__x
AttributeError: 'C' object has no attribute '__x'
c.get_x()
250
c.set_x (520)            修改为520
c.get_x ()                访问
520

__slots__    的限制作用

class C:__slots__=["x","y"]            只有两个参数def __init__(self,x):self.x=xc=C(250)
c.x
250
c.y=520
c.y
520
c.z=666
Traceback (most recent call last):File "<pyshell#9>", line 1, in <module>c.z=666
AttributeError: 'C' object has no attribute 'z'

继承自父类的__slots__属性是不会在子类中生效的,

6__new__(cls[,......])

class CapStr(str):def __new__(cls,string):            字符串类string=string.upper()            变为大写return super().__new__(cls,string)        cs=CapStr("Python")
cs
'PYTHON'
cs.lower()
'python'
cs.capitalize ()
'Python'

__del__(cls[,......])                销毁方法

class C:def __init__(self):print("我来了~~")def __del__(self):print("我走了~~")c=C()
我来了~~
del c
我走了~~
c=C()
我来了~~
d=c
del c            没用了
del d
我走了~~

重生:使用闭包的方法

7.运算方法(各种方法类似)

相加:(要求不是拼接)

class S(str):def __add__(self,other):return len(self)+len(other)s1=S("english")
s2=S("python")
s1+s2
13

 8.

二进制 bin( )

bin(2)
'0b10'
bin(8)
'0b1000'3|2            按位或
3
3|4
7
3&4            按位与
0
2&3
2
~3            按位取反
-4
~2
-3
3^2            按位异或
1
3^4
7

左移<<      (n位就是乘以2的n次方)         右移>>                   (右移n位就是地板除以2的n次方)

bin(8)
'0b1000'
8>>2        右移2位
2
8>>3
1
8<<2           左移2位
32
8<<3
64

  9.属性访问

hasattr()   检测对象是否有某个属性

getattr()      获取对象中的某个属性值

与之对应的函数(getattribute)
class C:def __init__(self,name,age):self.name=nameself.__age=agedef __getattribute__(self,attrname):print("拿来吧你~~")return super().__getattribute__(attrname)c=C("猪大肠",18)
getattr(c,"name")
拿来吧你~~
'猪大肠'
拿来吧你~~
拿来吧你~~
c.__C__age
拿来吧你~~

setattr()        设置某个属性的属性值

delattr()        删除某个属性

对应的函数:
class D:def __setattr__(self,name,value):self.__dict__[name]=value        使用字典def __delattr__(self,name):del self.__dict__[name]d=D()
d.name="猪大肠"
d.__dict__
{'name': '猪大肠'}
del d.name
d.__dict__
{}

总体的访问:

class C:def __init__(self,name,age):self.name=nameself.__age=age                设为私有属性c=C("猪大肠",18)
hasattr(c,"name")
True
getattr(c,"name")                访问属性
'猪大肠'
getattr(c,"_C__age")              访问私有属性
18
setattr(c,"_C__age",28)           设置属性变量
getattr(c,"_C__age")
28
delattr(c,"_C__age")                删除
hasattr(c,"_c__age")
False

10.迭代器创建

class Double:def __init__(self,start,stop):self.value=start-1self.stop=stopdef __iter__(self):return selfdef __next__(self):if self.value==self.stop:raise StopIterationself.value+=1return self.value*2d=Double(1,5)
for i in d:print(i,end='')246810

Python 入门学习 详细知识点+典型例题 /自学笔记(四)相关推荐

  1. 自学python买什么书比较好-python入门学习哪个书比较好(python视频教程知乎)

    自学python的学习路线是什么?推荐一些python学习资源 第一段 初级,掌握Python的语法和常用库的使用 这里首先推雪锋在网上的书籍,这是Python2.7的,这本书适合于重头开始一直读完, ...

  2. 自学python推荐书籍2019-2019最全Python入门学习路线,不是我吹,绝对是最全

    近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学 ...

  3. python入门视频教程推荐-python入门学习哪个书比较好(python视频教程知乎)

    自学python的学习路线是什么?推荐一些python学习资源 第一段 初级,掌握Python的语法和常用库的使用 这里首先推雪锋在网上的书籍,这是Python2.7的,这本书适合于重头开始一直读完, ...

  4. Python入门学习笔记1-Python基础

    Python入门学习笔记1-Python基础 前言:本文介绍了Python学习的前导知识概念以及必记基础函数,如善用help方法查看帮助文档,以及内置对象类型的概念以及常用函数的详解. 一.Pytho ...

  5. python速成要多久2019-8-28_2019最全Python入门学习路线,不是我吹,绝对是最全

    近几年Python的受欢迎程度可谓是扶摇直上,当然了学习的人也是愈来愈多.一些学习Python的小白在学习初期,总希望能够得到一份Python学习路线图,小编经过多方汇总为大家汇总了一份Python学 ...

  6. 字字谏言!Python入门学习教程:关于Python不得不说的事儿

    作为程序员,你肯定遇到过这样的领导: "别人还没走,你先走了不合适吧." "不能确定功劳,总得有苦劳吧!你看别人9点谁走了?" 说到996,这很有可能是诱因之一 ...

  7. Python入门学习---第四天

    面向对象编程 类和实例 概念与其他面向对象编程语言类似. 以Student类为例,在Python中,定义类是通过class关键字: class Student(object):pass (object ...

  8. Python入门学习之异常处理机制

    异常即是一个事件,该事件会在程序执行过程中发生影响程序的正常执行.python提供了两个非常重要的功能来处理python程序在运行中出现的异常和错误.今天的Python入门学习课程就给大家讲解一下异常 ...

  9. python入门学习:4.if语句

    python入门学习:4.if语句 关键点:判断 4.1 一个简单的测试4.2 条件测试4.3 if语句 4.1 一个简单的测试   if语句基本格式如下,注意不要漏了冒号 1if 条件 :2 执行1 ...

  10. java入门学习_Java入门学习进阶知识点

    Java入门学习进阶知识点 入门阶段,主要是培养Java语言的编程思想.了解Java语言的语法,书写规范等,掌握Eclipse.MyEclipse等开发工具,编写Java代码的能力.学完这个阶段你应该 ...

最新文章

  1. 区块链还能赚钱吗 区块链挖矿赚钱吗
  2. 如何为程序分配合适的栈空间?
  3. 11种必知的word embeddings模型
  4. Hadoop之MapReduce入门
  5. 解题报告——例题 5-6团体队列(Team Queue UVa 540)——31行代码解决
  6. WDCP管理面板安装启动EXIF、bcmath完整步骤
  7. Leetcode | 107. Binary Tree Level Order Traversal II
  8. c+pow函数的头文件_pow()函数以及C ++中的示例
  9. html红色星号怎么做_码农的插花艺术:HTML(一)
  10. 【Elasticsearch】用Elasticsearch和Raspberry Pi构建一个真实世界的警报
  11. Mysql_mysql force Index 强制索引
  12. python全栈之巅_Python 迭代器、生成器详解 - Python全栈之巅
  13. 串口转发工具 串口屏调试神器 PC串口监视神器
  14. 车型车系品牌api离线版 CarApi
  15. 上拉加载更多即ion-content遇上slideBox的时候
  16. 安防大数据时代的IP摄像机发展
  17. Android Studio开发手机APP(二)-利用MQTT通信开发物联网程序
  18. 小技巧(8)pimple模式
  19. Java - IO流学习笔记
  20. 【嵌入式操作系统-2】Cortex-M7处理器编程者模型

热门文章

  1. Unity笔记-29-ARPG游戏项目-06-弓箭
  2. ELI'S CURIOUS MIND
  3. 美团:落地 Service Mesh 的挑战与实践!
  4. xargs -i参数详解
  5. 0611 auto sorting and resend script
  6. 打败特斯拉!深度起底「偶然亿万富翁」贾跃亭的法拉第野心
  7. [MvcCore]记录部署好的应用程序突然无法访问的一次蹩脚经历!
  8. android:layout_weight权重与warp_content配合使用
  9. 共阳极数码管与共阴极数码管联合使用来循环显示数字00-99。
  10. (用户角色)超级全面的权限系统设计方案