您的位置:首页 > 编程语言 > Python开发

python学习笔记——类和对象

2020-04-01 19:09 751 查看

面向对象编程的表现形式:

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)
#删除对象中指定的属性

  • 点赞
  • 收藏
  • 分享
  • 文章举报
the_new_zz 发布了9 篇原创文章 · 获赞 0 · 访问量 105 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: