.01 昨日内容回顾
面向对象:1,将一些相似功能的函数集合到一起
类:具有相同属性和功能的一类事物。
对象:类的具体体现。
2,站在上帝的角度考虑问题,类就是一个公共模板,

类的结构:
class Person:
mind = '有思想'静态属性 静态字段

def __init__(self,name,age):
self.name = name
self.age = age

def work(self): # 动态属性 方法
print('能工作')

类名:
1,Person.mind万能的点.
2, Person.__dict__ 查询类中的所有内容

不建议这么做
3,Person.work(111)

对象:
obj = Person('barry', 18)
1,在内存中开辟一个空的对象空间
2,自动执行__init__方法,先把对象空间传给self,后面参数一次传入
3,执行__init__代码,将封装好属性的对象空间返回给了obj

1,查询对象的属性:
obj.__dict__
2,查询对象单独的属性:
obj.name
3,对象查询类中的属性:
obj.mind
4,对象执行类中的方法:
obj.work()
Person.work(obj)

02 作业讲解
03 类的名称空间以及对象名称空间
04 组合
05 面向对象的三大特征:继承,封装,多态

# 03 类名称空间对象空间

# class Gamerole(object):

    # name = 'LOL'    # year = 2012    # def __init__(self,name,ad,hp):    #     self.name = name    #     self.ad = ad    #     self.hp = hp    # def attack(self,p1):    #     p1.hp -= self.ad    #     print('%s攻击%s,%s掉了%s血,还剩%s血'%(self.name,p1.name,p1.name,self.ad,p1.hp))

# gailun = Gamerole('草丛伦',40,1200)# gailun.armor = 60 #给对象添加属性# print(gailun.__dict__)# 对象的属性:不仅能在__init__里面添加,还可以在其他方法或者类外面添加。# yasuo = Gamerole('托儿所',60,800)# yasuo.attack(gailun)# 类的属性:不仅在类内部可以添加,还可以在类外部添加。# Gamerole.year = 6# print(Gamerole.__dict__)

# print(gailun.year)  #从对象查看类中属性# 对象空间中存在一个类对象指针,所以对象可以找到类中的变量以及方法# 类名只能找到类中的变量,方法,或者(父类中的),不能找对象中的属性。

# 04 组合

# 计算一个类被多少人执行过。

'''count = 0class A:    def __init__(self):        global count        count += 1'''  #建议使用下面方法# class A:#     count = 0#     def __init__(self):#         A.count += 1  # *** ## obj = A()# print(obj.count)# obj = A()# print(obj.count)# obj = A()# obj = A()# obj = A()# obj = A()# print(A.count)

# 组合: 将一个对象封装到另一个对象的属性中

# class Gamerole:#     def __init__(self,name,ad,hp):#         self.name = name#         self.ad = ad#         self.hp = hp#     def attack(self,p1):#         p1.hp -= self.ad#         print('%s攻击%s,%s掉了%s血,还剩%s血'%(self.name,p1.name,p1.name,self.ad,p1.hp))##     def equip_weapon(self,wea):##         self.wea = wea

# class Weapon:#     def __init__(self,name,ad):#         self.name = name#         self.ad = ad#     def weapon_attack(self,p1,p2):#         p2.hp = p2.hp - self.ad - p1.ad#         print('%s 利用 %s 攻击了%s,%s还剩%s血' %(p1.name,self.name,p2.name,p2.name,p2.hp))

# barry = Gamerole('太白',10,200)# panky = Gamerole('金莲',20,100)# pillow = Weapon('枕头',2)

# pillow.weapon_attack(barry,panky)

# class Gamerole:#     def __init__(self,name,ad,hp):#         self.name = name#         self.ad = ad#         self.hp = hp#     def attack(self,p1):#         p1.hp -= self.ad#         print('%s攻击%s,%s掉了%s血,还剩%s血'%(self.name,p1.name,p1.name,self.ad,p1.hp))#     def equip_weapon(self,wea):#         self.wea = wea  # 组合:给一个对象封装一个属性,该属性是另一个类的对象

# class Weapon:#     def __init__(self,name,ad):#         self.name = name#         self.ad = ad#     def weapon_attack(self,p1,p2):#         p2.hp = p2.hp - self.ad - p1.ad#         print('%s 利用 %s 攻击了%s,%s还剩%s血' %(p1.name,self.name,p2.name,p2.name,p2.hp))

# barry = Gamerole('太白',10,200)# panky = Gamerole('金莲',20,100)# pillow = Weapon('枕头',2)

# 给人物装备武器# barry.equip_weapon(pillow)# # print(barry.__dict__)  #{'name': '太白', 'ad': 10, 'hp': 200, 'wea': <__main__.Weapon object at 0x000000000293E240>}# barry.wea.weapon_attack(barry,panky)

# 组合的好处:# 1,代码更合理。# 2, 类与类之间的耦合性增强。

# 05 面向对象三大特征:继承

# 继承

# class Aniaml:#     def __init__(self,name,sex,age):#         self.name = name#         self.age = age#         self.sex = sex## class Person:#     def __init__(self,name,sex,age):#         self.name = name#         self.age = age#         self.sex = sex## class Cat:#     def __init__(self,name,sex,age):#         self.name = name#         self.age = age#         self.sex = sex

# class Dog:#     def __init__(self,name,sex,age):#         self.name = name#         self.age = age#         self.sex = sex# ------------------## class Aniaml(object):#     type_name = '动物类'#     def __init__(self,name,sex,age):#         self.name = name#         self.age = age#         self.sex = sex#     def eat(self):#         print(self)#         print('吃东西')

# class Person(Aniaml):#     type_name = '人类'#     pass

# class Cat(Aniaml):#     type_name = '猫'#     pass

# class Dog(Aniaml):#     type_name = '狗'#     pass

# Aminal 叫做父类。# Person Cat Dog: 子类,派生类。# 单继承:# 类名:# 可以调用父类的属性,方法。# print(Person.type_name)  #人类   找不到才会往父级寻找# Person.eat(111)  #111 吃东西# print(Person.type_name)

# 对象# 实例化对象# p1 = Person('春哥','男',18)# p1 = Person()  #报错# 对象执行类的父类的属性,方法。# print(p1.type_name)  #人类# p1.type_name = '666'        #修改# print(p1.type_name)  #666# print(p1)  #<__main__.Person object at 0x00000000026DE240># p1.eat()  #<__main__.Person object at 0x00000000026DE240>

# 继承:单继承,多继承。# python 类:# 经典类:只存在python2x,不继承object的类,所以python2x既有经典类,又有新式类。# 新式类:继承object类。python3x所有的类默认都继承object。# 单继承都一样。# 多继承不一样:# 经典类 :深度优先。# 新式类 : mro 继承顺序,C3算法。

# class Animal(object):#     type_name = '动物类'#     def __init__(self,name,sex,age):#         self.name = name#         self.sex = sex#         self.age = age

    # def eat(self):    #     print(self)    #     print('吃东西')

# class Person(Animal):#     def __init__(self,name,sex,age,mind): #mind位置可以在前面,乱序        '''        self = p1        name = '春哥'        sex = 'laddboy'        age = 18        mind = '有思想'        '''        # Animal.__init__(self,name,sex,age)  # 方法一        # super(Person,self).__init__(name,sex,age)  # 方法二(简写如下)        # super().__init__(name, sex, age)  # 方法二        # self.mind = mind

    # def eat(self):    #     super().eat()    #     print('%s 吃饭' % self.name)

# 既要执行子类方法,又要执行父类方法# 方法一: Aniaml.__init__(self,name,sex,age)# p1 = Person('春哥','laddboy',18,'有思想')# print(p1.__dict__)

# 方法二:super# p1 = Person('春哥','laddboy',18,'有思想')# print(p1.__dict__)# def func(self):#     pass# self = 3# func(self)

# p1 = Person('春哥','laddboy',18,'有思想')# p1.eat()

# 继承:# 1,类与类之间的耦合性增强。# 2,节省代码。# 3,代码更加规范化,合理性。

day19_python_1124的更多相关文章

随机推荐

  1. 判断是否滚动加载结束 用一个公共变量isScroll来控制

    如果还没达到最大页数,isScroll就一直是不变,ajax正常进行.如果达到最大页数,就不执行ajax操作了...

  2. python中使用os.path.join()

    os.path.join的详细解释请移步os.path模块在使用的过程中,我使用如下代码: import ospath = "F:/gts/gtsdate/"b = os.path ...

  3. BN多卡同步进行

    为什么不进行多卡同步? BatchNorm的实现都是只考虑了single gpu.也就是说BN使用的均值和标准差是单个gpu算的,相当于缩小了mini-batch size.至于为什么这样实现,1)因 ...

  4. Scrapy框架的学习(6.item介绍以及items的使用(提前定义好字段名))转载https://blog.csdn.net/wei18791957243/article/details/86259688

      在Scrapy框架中的items.py的作用   1.可以预先定义好要爬取的字段     items.py import scrapy     class TencentItem(scrapy.I ...

  5. win7共享打印机和防火墙配置

    今天给公司一台Win7电脑连接的打印机做共享.办公司共6台电脑,其中1台是连接了打印机,并安装了打印机驱动,可以正常本机使用打印机.现在需要其他5台电脑也共享使用打印机. 1.当共享的时候,提示“无法 ...

  6. 颜色扩展类--ColorExtensions

    /// <summary> /// 颜色扩展类 /// </summary> public static class ColorExtensions { /// <sum ...

  7. 2.0JAVA基础复习——JAVA语言的基础组成关键字和标识符

    JAVA语言的基础组成有: 1.关键字:被赋予特殊含义的单词. 2.标识符:用来标识的符号. 3.注释:用来注释说明程序的文字. 4.常量和变量:内存存储区域的表示. 5.运算符:程序中用来运算的符号 ...

  8. P3195 [HNOI2008]玩具装箱TOY(斜率优化dp)

    P3195 [HNOI2008]玩具装箱TOY 设前缀和为$s[i]$ 那么显然可以得出方程 $f[i]=f[j]+(s[i]-s[j]+i-j-L-1)^{2}$ 换下顺序 $f[i]=f[j]+( ...

  9. Unable to execute 'doFinal' with cipher instance

    今天项目启动后登录项目,突然爆出Unable to execute 'doFinal' with cipher instance错误.清除cookie登录测试,又不报错了,以前也见过类似问题,因为不影 ...

  10. vue中的.native修饰符

    如果你想在某个组件的根元素上绑定事件,直接使用 @click=''function' 是不生效的,我们可以添加.native修饰符 @click.native=''function'',请看以下dem ...