Python——类和对象

本文详细介绍了Python中的类和对象概念,包括类的定义、对象的创建、实例方法与对象方法、对象属性的添加和获取、魔法方法如__init__、__str__和__del__的作用。同时涵盖了经典类和新式类的区别以及实例化过程中的自定义初始化和输出行为。
摘要由CSDN通过智能技术生成

目录

定义类 

语法:    

创建对象

语法:  

实例方法/对象方法:              

语法:  

           添加和获取对象属性

类外面添加对象属性:

语法:  

类里面获取对象属性:

语法:   

魔法方法:

__init__():  

__str__():  

__del__():                     

示例代码



类和对象的关系: 用类去创建一个对象

类是对一系列具有相同特性和行为的事物的统称--------虚拟
特征即是属性
行为即是方法

对象是类创建出来的真实存在的事物------真实存在

开发中,先有类,再有对象

Python2中类分为 经典类 和 新式类


定义类 

语法:    

class 类名():
        代码1
        代码2
         ........

注意:类名要满足标识符命名规则,同时遵循大驼峰命名习惯
             

拓展: 经典类------不由任意内置类型派生出的类称之为经典类

定义经典类 :     

class 类名:
         代码1
         代码2
.......
                          


创建对象

对象又名为实例       

语法:  

对象名 = 类名()

实例方法/对象方法:              

语法:  

对象名.类中方法名()

类中定义函数时参数位置的self是指调用该函数的对象

若调用该函数的对象是obj   即此时self指的就是obj
同一个类创建的不同对象调用函数方法时的self也不同

   
        
添加和获取对象属性

属性即是特征

对象属性既可以在类外面添加和获取,也能在类里面添加和获取

类外面添加对象属性:

语法:  

 对象名.属性名 = 值

例如:  

obj.width = 100
obj.height = 200   

  

类里面获取对象属性:

语法:   

self.属性名


魔法方法:

在Python中, _xx_()的函数叫做魔法方法,指的是具有特殊功能的函数

__init__():  

__init__():  初始化对象(在定义类时定义此函数用来添加实例属性)

注意:

1.__init__()方法,在创建一个对象时默认被调用,不需要手动调用
2.__init__(self)中的self参数,不需要开发者传递,Python解释器会自动把当前的对象引用传递过去

带参数的__init__():  对不同的对象设置不同的初始化属性

语法: 

def __init__(self,属性1,属性2):
           self.属性1 = 属性1
           self.属性2 = 属性2

传参:创建对象时传入参数

对象名 = 类名(参数1,参数2)       

__str__():  

__str__():   当使用print输出对象的时候,默认打印对象的内存地址,如果类定义了__str__方法,那么就会打印从在这个方法中return的数据  

一般放置解释说明性质的文字,为了解释类的作用

__del__():                     

__del__():   当删除对象时,Python解释器也会默认调用__del__()方法  
删除对象时,执行__del__()方法里面的内容                         

示例代码


'''
class A():   # 创建类
    def p(self):   # 定义类中的函数
        print('我是类中的方法')
        print(self)            # <__main__.A object at 0x0000022AA6F97278>

obj = A()  # 创建对象
print(obj)   # <__main__.A object at 0x000001C2EC107278>
print(type(A))   # <class 'type'>
print(type(obj))  # <class '__main__.A'>

# 对象调用类中的方法
obj.p()    # <__main__.A object at 0x00000256398270B8>

obj_1 = A()
obj_1.p()   # <__main__.A object at 0x000002563992C438>

# 类外面添加属性
obj.width = 100
obj.height = 200
print(obj.width)
print(obj.height)

# 类里面获取对象属性
class B():
    # 定义__init__() 设置初始化属性
    def __init__(self):
        self.name = '我是属性name'
        self.age = '我是属性age'
    def p(self):
        print(f'类里面获取的属性self.width:{self.width}')   # 类里面获取实例属性
        print(f'类里面获取的属性self.height:{self.height}')
        print(f'类里面获取的属性self.name:{self.name}')
        print(f'类里面获取的属性self.age:{self.age}')
obj1 = B()   # 创建对象
# 添加实例属性
obj1.width = 200
obj1.height = 400
obj1.p()  # 调用方法

print('--------------------------------------')
class C():
    def __init__(self,width,height):
        self.width = width
        self.height = height
    def init_p(self):
        print(f'类里面获取的属性self.width:{self.width}')
        print(f'类里面获取的属性self.height:{self.height}')

objc = C(400,450)    # 创建不同对象时的属性值不同
objc1 = C(900,960)

objc.init_p()
objc1.init_p()


class Washer():
    def __init__(self,width,height):
        self.width = width
        self.height = height

    def __str__(self):
        return '这是初始化介绍,'+f'宽度属性{self.width},高度属性{self.height}'

    def __del__(self):
        print(f'{self.__class__}对象已经被删除')

washer = Washer(200,250)
print(washer);     # 打印时不是地址,是__str__()方法里面的内容
del washer



print('----------------------------------------')
#  烤地瓜
class SweetPotato():
    def __init__(self):
        self.cook_time = 0
        self.cook_static = '生的'
        self.cook_condiments = []
    def cook(self,time):
        self.cook_time += time  # 时间累加
        if  0 <= self.cook_time < 3:
            self.cook_static = '生的'
        elif 3 <= self.cook_time < 5:
            self.cook_static = '半生不熟'
        elif 5 <= self.cook_time < 8:
            self.cook_static = '熟了'
        elif self.cook_time >= 8:
            self.cook_static = '糊了'
    def condiments(self,str):
        self.cook_condiments.append(str)
    def __str__(self):
        return f'时间:{self.cook_time},熟度:{self.cook_static},配料{self.cook_condiments}'

potato = SweetPotato()

print(potato)  # 初始状态
potato.cook(3)
potato.condiments('辣椒')
print(potato)
potato.cook(1)
potato.condiments('麻辣')
print(potato)
potato.cook(2)
potato.condiments('甜酱')
print(potato)
potato.cook(4)
potato.condiments('番茄酱')
print(potato)


        
 

  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值