python -- 面向对象

Posted 寂*凉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python -- 面向对象相关的知识,希望对你有一定的参考价值。

一、举例讲解

class Person:
    country = China          #创造了一个只要是这个类就一定有的属性
                               #类属性  静态属性
    def __init__(person,*args):#初始化方法,self是对象,是一个必须传的参数
        #self就是一个可以储存很多属性的大字典
        person.name = args[0]
        person.blood = args[1]
        person.attack = args[2]
        person.sex = args[3]
    def walk(self,n):          #方法,一般情况下必须传self参数,且必须写在第一个,
                               # 后面还可以传其他参数是自由的
        print(%s走走走,走了%s步%(self.name,n))
print(Person.country)  #类名  可以查看类中属性,不需要实例化就可以查看
#China
people_1 = Person(大白,1000,50,woman)  #类名还可以实例化对象   #实例化
print(people_1.__dict__)#查看所有属性
#{‘name‘: ‘大白‘, ‘blood‘: 1000, ‘attack‘: 50, ‘sex‘: ‘woman‘}
print(people_1.name)  #查看属性值
#大白
Person.walk(people_1,5)   #调用方法:类名.方法名(对象名)
people_1.walk(5)
#大白走走走,走了5步
print(Person.__dict__[country])
print(people_1.__dict__[name])
# China
# 大白
people_1.__dict__[name] = dabai
people_1.name = "dabai"
print(people_1.__dict__)
#{‘name‘: ‘dabai‘, ‘blood‘: 1000, ‘attack‘: 50, ‘sex‘: ‘woman‘}
people_1.age = 20
print(people_1.__dict__)
#{‘name‘: ‘dabai‘, ‘blood‘: 1000, ‘attack‘: 50, ‘sex‘: ‘woman‘, ‘age‘: 20}
#过程:
    # 类名()首先会创作出一个对象,创建了一个self变量
    # 调用init方法,类名括号里的参数会被这里接受
    # 执行init方法
    # 返回self
#对象能做的事:
    #查看属性
    #调用方法
#类名能做的事:
    # 实例化
    # 调用方法:只不过要自己传递self参数
    # 调用类中的属性,也就是调用静态属性
    #__dict__对于类中的名字只能看 不能操作

 二、人狗大战升级版

#人狗大战
class People:
    def __init__(self,name,blood,hp,sex):
        self.name = name
        self.blood = blood
        self.hp = hp
        self.sex = sex
        self.money = 0

    def attack(self,dog,weapon):
        dog.blood -= self.hp
        print({}用{}打了{},{}掉了{}血
{}还剩{}滴血.format(self.name,weapon.name,dog.name, dog.name,
                                              self.hp, dog.name,dog.blood))
    def get_weapon(self,weapon):
        you_inside_money = int(input(充值金额:))
        self.money += you_inside_money
        print(您目前金额:%s%self.money)
        if self.money >= weapon.price:
            self.money -= weapon.price
            self.blood += weapon.blood
            self.hp += weapon.hp
            print(购买成功!您金额还剩:%s%self.money)
        else:
            print("金额不足!")

class Dog:
    def __init__(self,name,blood,hp,kind):
        self.name = name
        self.blood = blood
        self.hp = hp
        self.kind = kind
    def bite(self,people):
        self.blood -= people.hp
        print({}咬了{},{}掉了{}血
{}还剩{}滴血.format(self.name, people.name, people.name,
                                              self.hp, people.name,people.blood))
class weapon:
    def __init__(self,name,blood,hp,price):
        self.name = name
        self.blood = blood
        self.hp = hp
        self.price = price

people_1 = People(大白,1000,10,woman)
people_2 =People(哪吒,500,20,man)
dog_1 = Dog(二哈,100,50,二哈)
dog_2 = Dog(哮天犬,400,100,None)

print({}
{}
{}
{}
.format(people_1.__dict__,people_2.__dict__,dog_1.__dict__,dog_2.__dict__))
bar = weapon(打狗棒,200,50,1000)
people_1.get_weapon(bar)
people_1.attack(dog_1,bar)
dog_2.bite(people_2)

# {‘name‘: ‘大白‘, ‘blood‘: 1000, ‘hp‘: 10, ‘sex‘: ‘woman‘, ‘money‘: 0}
# {‘name‘: ‘哪吒‘, ‘blood‘: 500, ‘hp‘: 20, ‘sex‘: ‘man‘, ‘money‘: 0}
# {‘name‘: ‘二哈‘, ‘blood‘: 100, ‘hp‘: 50, ‘kind‘: ‘二哈‘}
# {‘name‘: ‘哮天犬‘, ‘blood‘: 400, ‘hp‘: 100, ‘kind‘: ‘None‘}
# 
# 充值金额:10000
# 您目前金额:10000
# 购买成功!您金额还剩:9000
# 大白用打狗棒打了二哈,二哈掉了60血
# 二哈还剩40滴血
# 哮天犬咬了哪吒,哪吒掉了100血
# 哪吒还剩500滴血

 

以上是关于python -- 面向对象的主要内容,如果未能解决你的问题,请参考以下文章

python之路之前没搞明白4面向对象(封装)

Python面向对象学习之八,装饰器

python:第二部分:面向对象:面向对象object orinted

面向面试编程代码片段之GC

Python 面向对象

面向对象编程其实很简单——Python 面向对象(初级篇)