'''
知识点汇总
1-面向对象的引入:
1-先找出相应的对象
2-把这些涉及的对象的关系进行组网
2-类/实例
1-类:
1-现实不存在--抽象的概念--人类--鸟类
2-一类具有相同特征事物的统称!
2-类里面有
1-静态---属性(特征)---变量
2-动态---方法(行为)---函数
3-实例---也叫 对象
1-在这个类里面实际存在的个体
2-类是实例的抽象化概念
3-实例是类的具体实例化体现
4-实例化操作:
1-类里面的变量--属性
2-类里面的函数--方法
3-创建实例 t1 = Tiger()
5-静态属性和实例属性
1-静态属性:
1-也叫类属性
2-它属于整个类的
3-用法:1-类.属性 2-实例.属性
2-实例属性:
1-这个属性是 那个实例的,不属于整个类---其他实例不能共享
2-定义在 初始化方法 __init__ 里
3-一般在创建实例的时候就给定
4-只要创建实例--def __init__(self):初始化方法肯定会调用
5-self 只是代表词,并不是关键字--可以替换,但不建议替换!不能缺省
6-id(self)
7-实例化属性---只能 实例.属性
8- self 这个实例的本身
6-方法:
1-静态方法
1-属于整个类
2-类可以直接调用,不需要实例化 ----类.方法 / 实例.方法
3-用 @staticmethod 修饰 只能修饰紧跟的那一个
2-实例方法:
1-有self
2- 实例.方法
7-取随机数
from random import randint
randint(0,2)--取 0 1 2 闭区间
8-时间处理:
1- import time
time.time()---单位是s 秒 从1970算起
9-继承
1-继承关系可以是多个父类
2-重写--在父类跟子类之间的一个多态的体现!
3-在重写情况下,调用父类的方法
super(SouTiger,s1).roar()
super(子类类名,子类的实例名).roar()
4- __name 私有属性
'''''
'''
类:
1- 特征
2- 行为
--3- 构造方法
游戏分解:
1- 找出需求里面涉及的对象
1- 房间
2- 老虎
1- 特征:俗称,专业术语:属性,本质是:变量
1- 叫声***静态属性
2- 体重**实例属性--每一个实例可以不一样!
3- 食物
4- 高
2- 行为:俗称,术语:方法 本质就是 函数
1- 睡
2- 跑
3- 叫---***
4- 吃---***
5- 打
3- 羊
2- 对象关系组网
'''
class Tiger: # 定义类
# 俗称:特征 本质是:变量----术语:属性 静态属性:属于整个类
clsaaName = '老虎'
'''
静态属性(类属性) 老虎的名称(该类的所有实例共享的属性)
# 静态属性调用:1、实例.属性 2、类.属性
'''
# t1 = Tiger() # 创建实例
# t2 = Tiger()# 创建实例
# print(t1.clsaaName) # 实例.属性
# print(Tiger.clsaaName) # 类.属性
#
#
# class Tiger:
# clsaaName = '老虎'
#
# # 本质是一个函数 术语:方法 ---初始化方法:创建实例用的,自动调用
# def __init__(self,inweight): # self 会自动传入这个实例对象
# print('你看,我被执行了',inweight)
# self.weight = inweight
# # 创建实例
# t1 = Tiger(100)
# t2 = Tiger(200)
# print(t1.weight,t2.weight)
# # 实例属性不能用类调用
# print(Tiger.weight) # 对象(实例)“tiger”没有属性“weight”
# -------------------------对象方法-----------------------------
'''
概念:通过定义在类里面的函数
对象方法 实例方法:每个具体实例相关的方法 本质是函数
静态方法:共有的方法,与每个具体实例无关 本质是函数
'''
# class Tiger:
# clsaaName = '老虎'
# def __init__(self,inweight):
# self.weight = inweight
## 实例方法 ---那个老虎叫 体重有变化(单个)
# def roar(self):
# self.weight -=5
# print('WOW!!,体重减了5斤!!')
# def feed(self,food):
# if food =='rou':
# self.weight +=10
# print('喂对了')
# else:
# self.weight -= 10
# print('抱歉,喂错了')
#
# @staticmethod
# def tell_weight():
# print('静态方法')
#
# t1 = Tiger(100)
# t2 = Tiger(200)
# t1.roar()
# t1.feed('草')
#
# print(t1.weight,t2.weight,t1.tell_weight())
#------------------------静态方法---------------------
# '''
# 1.静态方法:与每个实例无关
# 2.@staticmethod 修饰(装饰器)
# '''
# ----------------------对象组合--------------------
# class Room: # 实例属性 房间 动物
# RoomName = '房间'
# def __init__(self,inNum,inAnimol):
# self.num = inNum
# self.animol = inAnimol
#
#
# t5=Room()
# t6 = Room()
# print(t5.roomName) # 实例.属性
# print(Room.roomName) # 类.属性
class Tiger:
clsaaName = '老虎'
def __init__(self,inweight=200):
self.weight = inweight
# 实例方法 ---那个老虎叫 体重有变化(单个)
def roar(self):
self.weight -=5
print('WOW!!,体重减了5斤!!')
def feed(self,food):
if food =='rou':
self.weight +=10
print('喂对了')
else:
self.weight -= 10
print('抱歉,喂错了')
@staticmethod
def tell_weight():
print('静态方法')
class Room: # 实例属性 房间 动物
RoomName = '房间'
def __init__(self,inNum,inAnimol):
self.num = inNum
self.animol = inAnimol
class Sheep:
pass
t1 = Tiger(100)
t2 = Tiger(200)
t1.roar()
t1.feed('草')
print(t1.weight,t2.weight)
r1 = Room(1,'羊')
# -------------------游戏初始化操作-----------------------
from random import randint # 取随机数
roomList = [] # 任意类型-----存放的房间的实例
for one in range(1,11): # 1~10
if randint(0,1) ==0:
ani = Tiger(200)
else:
ani = Sheep(200)
room = Room(one,ani)
roomList.append(room)
#-----------------------------------------------------------------
print(randint(0,2)) # 0 1 2 随机
# 抽奖
# nameList = ['a','b']
# print(nameList[randint(0,1)])
import time
print(time.time()) # 获取时间---单位是s 从1970----至今
startTime = time.time() # 开始时间
while True:
curTime = time.time()
if curTime -startTime>120:
break
Python:面向对象
最新推荐文章于 2022-08-31 07:43:53 发布