Python面向对象基础

这篇博客详细介绍了面向对象编程(OOP)的概念,包括类和对象的定义、实例化过程以及方法。通过示例展示了如何创建类,如Person和People,并解释了`__init__`方法的作用。同时,博客探讨了self参数的含义,以及如何通过对象调用方法。最后,文章通过Role类展示了对象之间的交互,如攻击和恢复血量的操作,体现了OOP在实际问题解决中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面向对象基础(OOP)(object-oriented programming)

面向过程:根据业务逻辑从上到下写代码
函数式:将某功能代码封装导函数中
面向对象编程:将数据与函数绑定在一起,进行封装

类和对象

类:是一个模板,模板里面有很多函数 是具有一组相同或者相似属性和方法的一系列对象的集合
类:类名,类的属性,类的方法
对象:是实实在在的东西,是类的实例化

#采用大驼峰法
class Person:
    name = 'Charlie'   类属性  直接归属类所有
    age = 18
    def eat(self):   **实例方法** 在类的内部,类的外部是普通方法 【self表示可以是其他名字,但是这个位置必须被占用】
    
    def __init__(self):
    	self.name='xiaoming'  实例属性
    定义在方法里面,用self引用的属性是实例属性
        print('大口大口吃饭')
        pass
    
    def run(self):
        print('跑')
        pass
    
shi = Person() #创建一个对象
shi.eat()
print(shi.name,shi.age)

init 方法


class People:
    #初始化的方法,是由系统实例化直接就调用了,完成初始化功能
    def __init__(self):  #实例属性的声明
        self.name='小明'
        self.sex = 'Male'
        self.age = 18
    def eat(self):
        print('喜欢吃榴莲')

xq = People()
print(xq.name)   #输出的是定义的默认值
xq.name = 'sss'  #可以修改
print(xq.name)

class People:
    def __init__(self,name,sex,age):  
        self.name = name
        self.sex = sex
        self.age = age
    def eat(self,food):
        print(self.name + '喜欢吃' + food)
#不同对象可以传入不同的特征值
xq = People('Charlie','Male',18)
print(xq.name)
xq.eat('banana')



self概念

self:self和对象指向同一个内存地址,就是对象的引用
会把对象自己传递到self这个参数

class Person:
    def __init__(self,name,food):
        self.name = name
        self.food = food
    
        
    def __str__(self):
        return '%s 爱吃 %s'%(self.name,self.food)
    
    def __new__(cls,*args,**kwargs):  #是第一个进行的,然后去进行init,把对象返回
        #经常用来做单例模式的时候来使用
        #创建对象实例的方法,每调用一次就会生成一个新的对象  cls就是class的缩写
        return object.__new__(cls)
    
    
xw = Person('hh','苹果')
print(xw)

import time 
class Role:
    def __init__(self,name,hp):
        #角色的名字和血量
        self.name = name
        self.hp = hp
    def tong(self,enemy):
        #enemy是敌人
        enemy.hp-=10
        info='%s捅了%s一刀'%(self.name,enemy.name)
        print(info)
    def kanren(self,enemy):
        enemy.hp-=15
        info='%s砍了%s一刀'%(self.name,enemy.name)
        print(info)
    def chiyao(self):
        self.hp+=10
        info='%s吃了一颗补血药,增加10滴血'%(self.name )
        print(info)
    def __str__(self):
        return '%s 还剩下 %s 的血量'%(self.name,self.hp)

r1 = Role('西门春雪',100)
r2 = Role('叶孤城',100)

while True:
    if r1.hp<=0 or r2.hp<=0:
        break  
    r1.tong(r2)# r1桶r2
    print(r1)
    print(r2)
    
    print('******************')
    r2.tong(r1)
    print(r1)
    print(r2)
    
    print('******************')
    r1.chiyao()
    print(r1)
    print(r2)
    time.sleep(1) #休眠1秒
   
print('对战结束')         


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值