Skip to main content
 首页 » 编程设计

Python 面向对象

2022年07月20日152三少

面向对象

面向对象编程 是一种思想
对象就是具体的拥有准确属性值的一些变量
类:一类具有相同属性和方法的事物

类的定义 class关键字 类名的首字母大写
类中直接定义属性:静态属性(变量) 和动态属性(函数)
类名的两个作用:属性引用实例化对象
类和属性的操作:类名.属性名 类名.__dict__['属性名'](不能修改)

复制代码
class Person:  # 类名有两个作用 
    country = '中国'  # 静态属性、数据属性 
    def __init__(self,life_value,aggr,name,job):  # 初始化方法 
        self.lv = life_value  # 属性,对象属性 
        self.aggr = aggr 
        self.name = name 
        self.job = job 
    def walk(self):  # 动态属性、函数属性、方法 
        print('%s is walking'%self.name)
复制代码

属性引用

复制代码
print(Person.walk) 
# print(Person.walk())  # 报错 少参数 
print(Person.__dict__) 
print(Person.__dict__['country'])  # 中国 
# Person.__dict__['country'] = '印度'  # 报错 不能改变 
print(Person.country)  # 中国 静态属性的查看 
Person.role = '人'  # 添加一个新静态属性 
print(Person.role)  # 人 
del Person.role  # 删除一个静态属性 
Person.country = '印度'  # 修改一个静态属性 
print(Person.country)  # 印度
复制代码

实例化对象

实例化:从一个类中创造一个具体的对象的过程

print(callable(Person))  # True 
p = Person() 
print(p)  # <__main__.Person object at 0x00000000028CD198> Person的对象

实例化——类名(参数)
构造方法:造对象
初始化:给这个对象添加一些属性 __init__
返回了一个初始化之后的对象
如何让对象拥有具体的属性
__init__方法:初始化方法,可以没有,给对象添加一些必要的基础属性
self的含义:就是这个对象本身

复制代码
p = Person(1000,2,'金老板','boss') 
print(p.lv)  # 1000 
print(p.aggr)  # 2 
print(p.name)  # 金老板 
print(p.job)  # boss 
print(p.__dict__)  # {'lv': 1000, 'aggr': 2, 'name': '金老板', 'job': 'boss'} 
print(p.__dict__['lv'])  # 1000 
p.__dict__['lv'] = 998  # 对象名.__dict__中的属性值可以被修改 
print(p.__dict__['lv'],p.lv)  # 998 998 
p.__dict__['sex'] = 'ladyboy'  # 对象名.__dict__中的属性值可以增加 
print(p.sex)  # ladyboy 
p.__dict__.pop('sex')  # 对象名.__dict__中的属性值可以被删除 
 
p.sex = 'ladyboy'  # 添加一个属性 
print(p.sex) 
p.sex = 'girl'  # 属性的修改 
del p.sex  # 删除一个属性 
# 对象和属性的操作:对象名.属性名 对象名.__dict__['属性名'] 
 
# Person.walk(p)  # 金老板 is walking 
p.walk()  # Person.walk(p)
复制代码

面向对象交互

简单的人狗大战

复制代码
class Person: 
    def __init__(self,life_value,aggr,name,job): 
        self.name = name 
        self.aggressive = aggr 
        self.life = life_value 
        self.job = job 
    def attack(self,dog_obj): 
        print('%s 攻击了 %s'%(self.name,dog_obj.name)) 
        dog_obj.life = dog_obj.life - self.aggressive 
 
 
 
class Dog: 
    def __init__(self,life_value,aggr,name,kind): 
        self.life = life_value 
        self.aggressive = aggr 
        self.name = name 
        self.kind = kind 
    def bite(self,person): 
        print('%s 攻击了 %s'%(self.name,person.name)) 
        person.life = person.life - self.aggressive 
 
dog = Dog(1000,100,'铁蛋','土狗') 
boss_gold = Person(100,2,'太黑','old_driver') 
boss_gold.attack(dog) 
print(dog.life) 
dog.bite(boss_gold) 
print(boss_gold.life)

本文参考链接:https://www.cnblogs.com/QQ279366/p/7853261.html