20180723 (面向对象:类和对象)

一.面向对象    (需要站在上帝的角度进行创建)

1.类 : 具有相同属性和技能的一类事物           (类后面的变量需要首字母大写)

  对象:具体类的表现,具体实实在在的一个实例

例如:

  人是一个类,张舒文是一个对象

  狗是一个类,球球是一个对象

面向对象的例子:

  类主要分为两个方面:1.变量部分(静态变量/静态字段)

            2.方法部分(函数部分/动态变量)

例如:

  class Person:

    mind = "有思想"

    money = "可以使用货币"                      =======>这三个部分是静态变量/静态字段

    farith = "有信仰"

    def __init__(self,name,age,sex,hobby):

      self.name = name

      self.age = age

      self.sex = sex

      self.hobby = hobby                                     ===========>这四个def是动态变量(函数/方法)

    def.work(self):

      print("可以工作")

    def.eat(self):

      print("可以吃饭")

    def.sleep(self):

      print("可以睡觉")

  p1 = Person("刘某某",22,"女","美食")

  p2 = Person("张某某",22,"男","小说")

2.类名的角度

  操作类中的静态变量:

   1.Person.__dict__[]    查询类中的所有内容   (最好查询所有的,不查单个的内容)

    括号里面可以通过key值找到value的值      (这个打印出来的数据类型是字典)

   2.万能的点  "."   (对类中单个的变量进行增删改查)

    (1)例如:

      print(Person.mind)     =====>打印出来是"有思想"           查

    (2)例如:

      Person.animal = "高级动物"                =======>在静态变量中增加一项                    增

      print(Person.__dict__)            =====>可以查询到那一项有没有被增加到里面

    (3)例如:

      Person.mind = "无思想"                      =========如果静态变量中存在mind  则是为它重新赋值                  改

    (4)例如:

      del  Person.mind

      print(Person.__dict__)                         =========>查询那一项有没有被删除                                 删

  操作类中的方法:     (工作当中基本不用类命去操作)

    除了类方法,静态方法,需要类名调用之外,剩下的方法都要对象调用

3.对象的角度

  Person()              类名+()过程则是实例化的过程(创建一个对象的过程)

          Person()   实例化对象,实例,对象

   只要类名+()产生一个对象,自动执行类中的__init__方法

    例如:

      def __init__(self,name,age,sex,hobby):                     ========>这个方法叫做构造方法

        print(name,age,sex,hobby)

      Person("张某某",22,"男","小说")                                   打印出来的效果是======>张某某  22  男  小说

    (1)类名+()  产生一个实例(对象/对象空间/实例空间)

    (2)自动执行类中的__init__方法,并且将对象空间传给__init__的self参数

    (3)给对象封装相应的属性   (执行具体的__init__代码)

      例如:

        def __init__(self,name,age,sex,hobby):

          self.name = name

          self.age = age

          self.sex = sex

          self.hobby = hobby

   操作对象中的静态变量

    1.__dict__查询对象空间中所有的内容

    2.万能的点   "."  

      (1)例如:

        print(p1.name)   =====>刘某某                               查

      (2)例如:

        p1.height = 170

        print(p1.__dict__)                    =======>字典里多了一项身高height            增

      (3)例如:

        del p1.name

        print(p1.__dict__)                     =======>字典里少了一项name的键值对                             删

      (4)例如:

        p1.age = 23

        print(p1.__dict__)                          ======>将age这一项的值改为23                                                  改

    对象操作类中的静态变量:

      只能查询   

        例如:  print(p1.mind)

    对象调用类中的方法:  (工作中通过对象执行类中的方法,而不是通过类名)

      例如:

        p1.work()

      也可以在其他方法中调用属性;

      例如:

        def func(self):

          self.height = 170

        p1.func()

        print(p1.__dict__)

 

 追加:

  内存地址加()可以执行     不过要括号里传个参数

  例如:   

class Person:
mind = "有思想"
money = "可以使用货币"
faith = "有信仰"
def __init__(self, name, age, sex, hobby,faith):
self.name = name
self.age = age
self.sex = sex
self.hobby = hobby
self.faith = faith
def work(self):
print("%s可以工作,自给自足" % self.name)
def eat(self):
print("可以吃到很多美食")
def language(self):
print("%s可以学习很多语言" % self.name)
def func(self):
faith = "没有信仰"
p1 = Person("刘某某", 22, "女", "吃","无")
p2 = Person("张某某", 22, "男", "看小说","有信仰")
p3 = Person("刘某",23,"女","睡觉","没有")
print(Person.eat(111))

 

 

 

 

作业:

第一题:

完成下列功能:
  1.1创建一个人类Person,再类中创建3个静态变量(静态字段)
    animal = '高级动物'
    soup = '有灵魂'
    language = '语言'
  1.2在类中定义三个方法,吃饭,睡觉,工作.
  1.3在此类中的__init__方法中,给对象封装5个属性:国家,姓名,性别,年龄,  身高.
  1.4实例化四个人类对象:
    第一个人类对象p1属性为:中国,alex,未知,42,175.
    第二个人类对象p2属性为:美国,武大,男,35,160.
    第三个人类对象p3属性为:你自己定义.
    第四个人类对象p4属性为:p1的国籍,p2的名字,p3的性别,p2的年龄,p3  的身高.
  1.5 通过p1对象执行吃饭方法,方法里面打印:alex在吃饭.
  1.6 通过p2对象执行吃饭方法,方法里面打印:武大在吃饭.
  1.7 通过p3对象执行睡觉方法,方法里面打印:(p3对象自己的名字)在吃饭.
  1.8 通过p1对象找到Person的静态变量 animal
  1.9 通过p2对象找到Person的静态变量 soup
  2.0 通过p3对象找到Person的静态变量 language

class Person:
animal = "高级动物"
soup = "有灵魂"
language = "语言"
def __init__(self,country,name,sex,age,hight):
self.country = country
self.name = name
self.sex = sex
self.age = age
self.hight = hight
def work(self):
print("%s在工作" % self.name)
def eat(self):
print("%s在吃饭" % self.name)
def sleep(self):
print("%s在睡觉" % self.name)

P1 = Person("中国","alex","未知",42,175)
P2 = Person("美国","武大","男",35,160)
P3 = Person("葡萄牙","C罗","男",33,185)
P4 = Person(P1.country,P2.name,P3.sex,P2.age,P3.hight)
r1 = P1.eat()
r2 = P2.eat()
r3 = P3.sleep()
print(P1.animal)
print(P2.soup)
print(P3.language)
print(P1.__dict__)
print(P2.__dict__)
print(P3.__dict__)
print(P4.__dict__)

第二题:

通过自己创建类,实例化对象
  在终端输出如下信息
  小明,10岁,男,上山去砍柴
  小明,10岁,男,开车去东北
  小明,10岁,男,最爱大保健
  老李,90岁,男,上山去砍柴
  老李,90岁,男,开车去东北
  老李,90岁,男,最爱大保健
  老张

class Person:
def __init__(self,name,age,sex):
self.name = name
self.age = age
self.sex = sex
def work1(self):
print("%s,%s.%s,上山砍柴去" % (self.name,self.age,self.sex))
def work2(self):
print("%s,%s,%s,开车去东北" % (self.name,self.age,self.sex))
def work3(self):
print("%s,%s,%s,最爱大保健" % (self.name,self.age,self.sex))
P1 = Person("小明","10岁","男")
P2 = Person("老李","90岁","男")
r1 = P1.work1()
r2 = P1.work2()
r3 = P1.work3()
r4 = P2.work1()
r5 = P2.work2()
r6 = P2.work3()

第三题:

模拟英雄联盟写一个游戏人物的类(升级题).
  要求:
  (1)创建一个 Game_role的类.
  (2) 构造方法中给对象封装name,ad(攻击力),hp(血量).三个属性.
  (3) 创建一个attack方法,此方法是实例化两个对象,互相攻击的功能:
      : 实例化一个对象 盖伦,ad为10, hp为100
      实例化另个一个对象 剑豪 ad为20, hp为80
      盖伦通过attack方法攻击剑豪,此方法要完成 '谁攻击谁,谁掉了多少血,  还剩多少血'的提示功能.

 

class Game_role:
def __init__(self,name,ad,hp):
self.name = name
self.ad = ad
self.hp = hp
def attack(self,p):
p.hp = p.hp - self.ad
print("%s攻击了%s,%s掉了%s血,还剩%s血" % (self.name,p.name,p.name,self.ad,p.hp))
P1 = Game_role("盖伦",10,100)
P2 = Game_role("剑豪",20,80)
r1 = P1.attack(P2)
 

转载于:https://www.cnblogs.com/lhy979/p/9360327.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值