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来使用组合类中的所有方法

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

     
  • 相关阅读:
    volley框架使用
    Insert Interval
    candy(贪心)
    Best Time to Buy and Sell Stock
    Best Time to Buy and Sell Stock III
    distinct subsequences
    edit distance(编辑距离,两个字符串之间相似性的问题)
    trapping rain water
    word break II(单词切分)
    sudoku solver(数独)
  • 原文地址:https://www.cnblogs.com/liuyankui163/p/8327685.html
Copyright © 2011-2022 走看看