python学习笔记——类和对象
面向对象编程的表现形式:
1.导入库
2.设计各种全局变量
3.决定需要类
4.给每个类提供完整的一组操作
5.明确地使用继承来表现不同类之间的共同点
6.可选择是否需要main函数作为入口
对象 = 属性+方法
类:用来描述具有相同属性和方法的对象的集合。它定义了该集合中每个对象多共有的属性和方法。其中的对象被称为类的实例。
#Python中类名约定以大写字母开头
对象:也叫实例。通过类定义的初始化方法,赋予具体的值。
实例化:创建类的实例的过程或操作。
实例变量:定义在实例中的变量,只用于当前实例。
方法:类中定义的函数。
便于理解的例子:飞机制造
类——飞机制造图纸
对象——飞机
方法——零件
定义类:
class 类名(父类列表):
属性列表
方法列表
创建对象:
对象名 = 类名()
同一个类可以生成无数个对象,self函数指的是类实例对象本身.()
在类中定义函数,第一参数永远是类的本身实例变量self
init方法:
1.初始化对象
2.参数值可以有多种形式
封装、继承、多态
封装:对数据,方法的封存
多态:对同一个方法,会根据对象的类型不同以不同的方式处理
继承:
被继承的类称为基类、父类或超类;
继承者称为子类,一个子类可以继承它的父类的任何属性和方法。
语法:
class 类名(被继承的类):
…
多重继承:有多个父类时以从左往右的顺序寻找方法,找到后不再继续寻找。(尽量避免使用)
super函数:可以自动找出所有基类及对应方法。
使用:
import random as r class Fish: def __init__(self): self.x = r.randint(0, 10) self.y = r.randint(0, 10) def move(self): self.x -=1 print("我的位置是:", self.x, self.y) class Goldfish(Fish): pass class Carp(Fish): pass class Salmon(Fish): pass class Shark(Fish): def __init__(self): super().__init__() self.hungry = True def eat(self): if self.hungry: print("吃货的梦想就是天天有的吃") self.hungry = False else: print("太撑了,吃不下") fish = Fish() fish.move() goldfish = Goldfish() goldfish.move() shark = Shark() shark.eat() shark.eat() shark.move()
组合:
也能实现一个类拥有另一个类的方法和属性。
组合中是拥有关系。如鱼类和乌龟类被水池类拥有。
如:
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)) pool = Pool(1, 10) pool.print_num()
驼峰命名法:
小驼峰命名法:第一个单词以小写字母开始;第二个单词的首字母大写,例如myName,aDog
大驼峰命名法:每一个单词的首字母都采用大写字母,例如:FirstName,LastName
类的定义要“少吃多餐”,合理利用继承和组合机制扩展类。
如果属性的名字和方法名相同,属性会覆盖方法
绑定
Python 严格要求方法需要有实例才能被调用,这种限制其实就是Python所谓的绑定概念。
class BB: def printBB(): print("no zuo no die") '''BB.printBB()''' bb = BB() bb.printBB()
由于绑定机制,会导致TypeError
一些BIF
1.issubclass(class,classinfo)
#如果第一个参数是第二个参数的一个子类,则返回True,否则返回False
2.isinstance(object,classinfo)
#如果第一个参数是第二个参数实例对象,则返回True,否则返回False
3.hasattr(object,name)
#如果第一个参数是对象,第二个是属性名,则返回True,否则返回False
4.getattr(object,name[,default])
#返回对象指定的属性值,若不存在,则返回default的值
5.setattr(object,name,value)
#可以设置对象中指定属性的值,若不存在,则新建并赋值
6.delattr(object,name)
#删除对象中指定的属性
- 点赞
- 收藏
- 分享
- 文章举报
- (python学习笔记)python的可迭代对象
- 《Python学习手册》学习笔记(4)之第4章介绍Python对象类型(关键词:编程语言/Python)
- Python学习笔记《Python核心编程》第4章Python对象
- 模块、类和对象(python学习笔记)
- python之路——迭代器与可迭代对象
- python基础===isinstance() 函数,判断一个对象是否是一个已知的类型
- Python学习笔记 类和对象
- Python 源码剖析(五)【DICT对象】
- Python笔记day23(对象)|类和对象命名空间、静态属性、组合
- python — 面向对象
- Python面向对象之私有属性和私有方法应用案例分析
- Python标准库05 存储对象 (pickle包,cPickle包)
- python基础(四)OOP 面向对象
- Python类和对象
- Python 类的定义、继承及使用对象 [转]
- python学习记录10--给自己:类与对象
- python对象序列化或持久化的方法《原创》
- python复习笔记[10] —— 面向对象程序设计
- 学习笔记--js的date对象
- python-str对象及操作