类名,首字母大写 class Tiger:
1-类/实例
1-类:
1-现实不存在--抽象的概念--人类--鸟类
2-一类具有相同特征的事物的统称!
2-类里面有
1-静态---属性(特征)---变量
2-动态---方法(行为)---函数
2-实例化操作:
1-类里面的变量--属性
2-类里面的函数--方法
3-创建实例 t1 = Tiger()
3-静态属性和实例属性
1-静态属性:
1-也叫类属性 class tige: classname="tigeniu"
2-它属于整个类的 ===描述类的属性,, 所有对象共有的且不变的一些特征定义为静态属性,
3-用法:1-类.属性 2-实例.属性
2-实例属性:[抽出最为属性的特征,一般都是此项目执行中有变动的特征]
1-这个属性是 那个实例的,不属于整个类---其他实例不能共享
2-定义在 初始化方法 __init__ 里 ,每个事队形都不同的属性【体重,年龄,身高。。。。。】
3-一般在创建实例的时候就给定
4-只要创建实例--def __init__(self):初始化方法肯定会调用
5-self 只是代表词,并不是关键字--可以替换,但不建议替换!不能缺省
6-id(self)
7-实例化属性--- 实例.属性
8- self 是指这个实例化的对象本身
4- 对象方法:
1-静态方法
需要修饰符,修饰符只能修饰最近的一个静态方法,如果有多个静态方法,就要用多个修饰符,一对一
@staticmethod
def staic-ror():
print('wow~~~')
2-实例方法
1-每个具体实例相关的方法
2-如果代码中的实例方法不访问任何的实例属性,一般建议实现为静态方法
3-初始化方法是一个实例方法【实例化对象之后执行】
4-一般实例方法都会访问self
def tellweight(self);print('my weight:'.format(self.weight))
注释:
如何判断一定静态方法和实例方法:
如果方法涉及到实例的属性,则定义为实例方法,否则就定义为静态方法
7-对象的组合
一个对象中包含着另一个对对象【一个实例中包含另一个实例】
class Room :
def __init__(self, innum, inanimal):
self.num = innum
self.animal = inanimal
t1 = tiger()
room = Room(1, t1)
room.animal.rorl()
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- 如果子类里面没有def __init__方法,子类会自动调用父类的__init__
2- 如果子类里面有def __init__方法,子类需要手动调用 父类.__init__
super(__int__)