面向对象+1

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.创建一个实例

class Tiger:
    Typename = "tiger"#类属性
    def __init__(self):#初始化方法---构造方法---(函数),初始化方法,只要你调用,就执行了。
        print("执行了") #self是自身自己的意思
t1 = Tiger()  #只要创建实例,初始化方法肯定会被执行
# 结果:执行了

2.创建一个实例:实例名=类名()

class Tiger:
    Typename = "tiger"  # 类属性
    pass

print(Tiger.Typename)
t1 = Tiger()  # 创建一个实例,类名()
print(t1.Typename)  # Typename属于整个类的,实例当然也可以使用
结果: tiger

3.初始化方法 init

class Tiger:
    Typename = "tiger"#类属性
    def __init__(self):#初始化方法---构造方法---(函数)
        print(self,"执行了")#self就是t1,self默认传给实例
        pass     #self是代言词,不是关键字,可以用其他字符代替,但是不建议换别的
t1 = Tiger()
print(t1)

#结果:
 <__main__.Tiger object at 0x017318B0> 执行了       
 <__main__.Tiger object at 0x017318B0>

4.创建实例属性
1.def _ init _(self, weight)就像一个函数一样,这里的weight是必填

class Tiger:
    Typename = "tiger"  # 类属性
    def __init__(self, weight):  # weight 相当于形参,传给属性。初始化方法---构造方法---(函数)
        self.weight = weight #把weight这个变量赋值给self.weight这个属性,

t1 = Tiger(100)  # 这里的100传给变量里面的weight,
print(t1.weight)
#结果:100

2.既然是函数,形参也可以缺省,实例就不要用传

class Tiger:
    Typename = "tiger"  # 类属性
    def __init__(self, weight=200):  # weight 相当于形参,且是缺省。传给属性。初始化方法---构造方法---(函数)
        self.weight = weight #把weight这个变量赋值给self.weight这个属性,

t1 = Tiger()  # 这里的不传的话,就是默认值200
t2 = Tiger(300) # 这里的传的话,就按传的值算,函数的缺省参数的知识
print(t1.weight)
print(t2.weight)
#结果:
200
300

5.类属性和实例属性

class Tiger:
    Typename = "tiger"  # 类属性
    def __init__(self, weight=200):  # weight 相当于形参,传给属性。初始化方法---构造方法---(函数)
        self.weight = weight #把weight这个变量赋值给self.weight这个属性,

t1 = Tiger()  # 这里的100传给变量里面的weight,
print(t1.weight)  #实例调实例属性当然可以
print(t1.Typename)   #实例调类属性当然可以
print(Tiger.weight)    #类调实例属性当然报错

结果:
200
tiger
报错

猜你喜欢

转载自blog.csdn.net/qq_37615098/article/details/82765930