首页 > 编程语言 > 详细

python - 面向对象基础(类,对象,查询顺序,组合)

时间:2019-07-14 16:09:39      阅读:78      评论:0      收藏:0      [点我收藏+]

一.面向对象

1. 类:具有相同属性和技能的一类事物

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

    1. 猫是一类,谁家养的猫是一个对象

二.类的应用与操作

1.类的创建

class Person:  # 通过class创建一个类,类名首字母大写

2.类名的角度

  1.操作类的静态变量

class Person:  # 创建一个类,类名首字母大写
    mind = 思想  # 定义一个变量,静态变量,静态字段
    faith = 信仰
    def __init__(self):
        print(今天又是充满元气的一天)

    def work(self):  # 方法,函数,动态变量
        print(新的一天)
# 类名.__dict__ 查询类中所有内容。(不能进行增删改操作)
print(Person.__dict__) 
# 类名.__dict__[‘静态变量‘] 查询静态变量的内容。(不推荐)
print(Person.__dict__[mind])
# 万能的 . 对类中的单个变量进行增删改查操作
Person.money = 600    #
del Person.faith        #
Person.mind = 思维    #
print(Person.mind)      #
print(Person.__dict__)

  2.操作类的方法

Person.work(传一个参数) # 调用方法 (不推荐)

3.对象的创建

Person()    # 类名+()实例化的过程,创建一个对象的过程(也叫对象空间)
        # 只要 类名+(),就会自动执行类中的__init__方法

4.对象的角度

  1.操作对象中的静态变量

    __dict__查询对象中所有的内容

    万能的 . 进行增删改查

    对象操作类中的静态变量,只能进行查询

    def __init__(self,name,age,hobby):
        self.name = name
        self.age = age
        self.hobby = hobby  # 给对象空间封装属性
p1 = Person(alex,26,篮球)   
p1.sex =     #
del p1.hobby    #
p1.age = 18     #
print(p1.name)  #
print(p1.__dict__)  # 查对象空间中所有内容
# 输出结果{‘name‘: ‘alex‘, ‘age‘: 18, ‘sex‘: ‘女‘}
#1. 类名+()产生一个实例(对象,对象空间)
#2. 自动执行__init__方法,将对像空间传给参数self
#3. 给对象封装对应的属性

  2. 对象调用方法

p1.work()

二.查询顺序

  1.对象.属性 : 先从对象空间找,再从类名空间找,再从父类找

  2.类名.属性 : 先从类名空间找,再从父类找

  3.对象与对象之间是相互独立的

三.组合

# 组合:给一个类的对象封装一个属性,这个属性又是另一个类的对象
class GameRole:

    def __init__(self, name, ad, ph):
        self.name = name
        self.ad = ad
        self.ph = ph

    def attack(self, role):
        role.ph = role.ph - self.ad
        print(%s 攻击了 %s,打了%s血,还剩%s血 % (self.name, role.name, self.ad, role2.ph))

    def Weapon_attributes(self,wea):
        self.wea = wea

class Weapon:
    def __init__(self, name, ad):
        self.name = name
        self.ad = ad

    def fight(self, role1, role2):
        role2.ph = role2.ph - self.ad

        print(%s 拿 %s 攻击了 %s,打了%s血,还剩%s血 % (role1.name, self.name, role2.name, self.ad, role2.ph))
        if role2.ph == 0:
            print(%s死掉了 % role2.name)

role1 = GameRole(阿狸, 60, 500)
role2 = GameRole(卡特琳娜, 80, 700)
axe = Weapon(开天斧,500)
broadsword = Weapon(青龙偃月刀,300)
axe.fight(role2,role1)
role1.Weapon_attributes(broadsword)
print(role1.__dict__)
role1.wea.fight(role1,role2)
role1.wea.fight(role1,role2)

 

python - 面向对象基础(类,对象,查询顺序,组合)

原文:https://www.cnblogs.com/jiujiang/p/11184351.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!