zoukankan      html  css  js  c++  java
  • Python之路——初识面向对象

    类的声明

    1 def functionName(args):
    2      '函数文档字符串'
    3       函数体 
    1 class Person:   #定义一个人类
    2     role = 'person'  #人的角色属性都是人
    3     def walk(self):  #人都可以走路,也就是有一个走路方法,也叫动态属性
    4         print("person is walking...")

    类的作用

      属性引用

      实例化:类名加括号就是实例化,会自动触发__init__函数的运行,

          可以用它来为每个实例定制自己的特征

     1 class Person:   #定义一个人类
     2     role = 'person'  #人的角色属性都是人
     3     def __init__(self,name):
     4         self.name = name  # 每一个角色都有自己的昵称;
     5         
     6     def walk(self):  #人都可以走路,也就是有一个走路方法
     7         print("person is walking...")
     8 
     9 
    10 print(Person.role)  #查看人的role属性
    11 print(Person.walk)  #引用人的走路方法,注意,这里不是在调用

    关于self

    self: 在实例化时自动将对象/实例本身传给__init__的第一个参数,你也可以给他起个别的名字,

      但是一般不要这么做。

    类属性

    一:我们定义的类的属性到底存到哪里了?有两种方式查看

    dir(类名):查出的是一个名字列表

    类名.__dict__:查出的是一个字典,key为属性名,value为属性值

    二:特殊的类属性

    类名.__name__# 类的名字(字符串)

    类名.__doc__# 类的文档字符串

    类名.__base__# 类的第一个父类(在讲继承时会讲)

    类名.__bases__# 类所有父类构成的元组(在讲继承时会讲)

    类名.__dict__# 类的字典属性

    类名.__module__# 类定义所在的模块

    类名.__class__# 实例对应的类(仅新式类中)

    类命名空间与对象、实例的命名空间

    创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性

    而类有两种属性:静态属性和动态属性

    • 静态属性就是直接在类中定义的变量
    • 动态属性就是定义在类中的方法
    其中类的数据属性是共享给所有对象的
    而类的动态属性是绑定到所有对象的

    面向对象的组合

    软件重用的重要方式除了继承之外还有另外一种方式,即:组合

    组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合

     1 class Weapon:
     2     def prick(self, obj):  # 这是该装备的主动技能,扎死对方
     3         obj.life_value -= 500  # 假设攻击力是500
     4 
     5 class Person:  # 定义一个人类
     6     role = 'person'  # 人的角色属性都是人
     7 
     8     def __init__(self, name):
     9         self.name = name  # 每一个角色都有自己的昵称;
    10         self.weapon = Weapon()  # 给角色绑定一个武器;
    11         
    12 egg = Person('egon')
    13 egg.weapon.prick() 
    14 #egg组合了一个武器的对象,可以直接egg.weapon来使用组合类中的所有方法

    当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好

     
  • 相关阅读:
    谢惠民,恽自求,易法槐,钱定边编数学分析习题课讲义16.2.3练习题参考解答[来自陶哲轩小弟]
    高考题(可作为试讲资料)
    美国数学教父拒绝10亿美元 免费分享教学视频
    梁启超死亡真相:主刀医生错把健康的肾切除
    [家里蹲大学数学杂志]第418期南开大学2013年实变函数期末考试试题参考解答
    陆启铿同志去世
    [电视剧]养父的花样年华
    [电视剧]错爱一生
    [家里蹲大学数学杂志]第413期插值不等式
    Oracle的 EXEC SQL CONTEXT学习
  • 原文地址:https://www.cnblogs.com/liuyankui163/p/8327685.html
Copyright © 2011-2022 走看看