Python学习day16-类与对象

在Python中,class(类)是一种用于创建对象的模板或蓝图。它封装了数据(属性)和与这些数据相关的操作(方法)。通过类,你可以创建具有特定属性和方法的对象。这种机制使得代码更加模块化和可重用。

类定义了一个对象的结构,包括它包含的数据(通过变量表示)和它可以执行的操作(通过函数表示,但在类中称为方法)。当你创建一个类的实例(即对象)时,你可以使用这个对象来访问其属性和方法。
在这里插入图片描述

示例

#1.设计一个类
class student:
    name=None
    age=None
#2.创建一个对象
xkk=student()
#3.对象属性进行赋值
xkk.name="xkk"
xkk.age=23

print(xkk.age)

在这里插入图片描述
在这里插入图片描述
可以看出,类中:
不仅可以定义属性用来记录数据也可以定义函数,用来记录行为其中:
类中定义的属性(变量),我们称之为:
成员变量
类中定义的行为(函数),我们称之为:
成员方法

成员方法

在这里插入图片描述
在成员方法内访问成员变量
self.成员变量

self关键字

在这里插入图片描述

class student:
    name=None
    age=None
    def st(self,say):
        print(say,f"我今年{self.age}岁了")
        #在成员方法内访问成员变量self.成员变量

xkk=student()

xkk.name="xkk"
xkk.age=23
xkk.st("你好")
print(xkk.age)

结果
你好 我今年23岁了
23

类与对象

在这里插入图片描述

class clock:
    name=None
    price=None
    def attribute(self,frequency,time):
        import winsound
        winsound.Beep(frequency,time)
clock1=clock()
clock1.name="xkk"
clock1.price=9.99
clock1.attribute(500,4000)

构造方法

在这里插入图片描述

class aaa:
    name=None
    age=None
    def __init__(self,name,age):
        self.name=name
        self.age=age
xkk=aaa("xkk",23)
dl=aaa('dsf',28)

1.构造方法的名称是:
init,注意init前后的2个下划线符号
2.构造方法的作用:
·构建类对象的时候会自动运行
·构建类对象的传参会传递给构造方法,借此特性可以给成员变量赋

3.注意事项:
·构造方法不要忘记self关键字
·在方法内使用成员变量需要使用self

其他类内置方法(魔术方法)

魔术方法
上文学习的_init_构造方法,是Python类内置的方法之一。
这些内置的类方法,各自有各自特殊的功能,这些内置方法我们称之为∶魔术方法
_init_构造方法
_str_字符串万法
_lt_小于、大于符号比较
_le_小于等于、大于等于符号比较
eq
符号比较
在这里插入图片描述
在这里插入图片描述

_str_符号

在这里插入图片描述
在这里插入图片描述

class student:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def __str__(self):
        return "%s,%d"%(self.name,self.age)
student1=student("xkk",23)

print(student1)

_Lt_符号

在这里插入图片描述
就比如stu1<stu2,那么stu1就会作为__lt__定义中的self,而stu2作为other

class student:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def __lt__(self, other):
        return self.age<other.age
student1=student("xkk",23)
student2=student('kyb',11)
print(student1>student2)#stu2作为self
结果
Ture

le小于等于比较

在这里插入图片描述

class student:
    def __init__(self,name,age):
        self.name=name
        self.age=age
    def __le__(self, other):
        return self.age<=other.age
student1=student("xkk",11)
student2=student('kyb',11)
print(student1>=student2)#student2作为self
结果
Ture

eq比较运算

在这里插入图片描述

call()方法

call 函数
  在Python中__call__ ()方法是一个特殊方法(也称为魔术方法或双下方法),它允许类的实例像函数那样被调用。当你尝试对一个对象使用圆括号()进行“调用”时,Python解释器会自动在该对象上查找__call__ ()方法,并调用它(如果存在);

代码介绍
  如何更直观的正确的理解上面的那句话呢,下面我们通过一个简单的程序来解释一下,下面这个程序就是正常的python类。里面有一个初始化代码,还有一个名字叫**test()**的函数;我们先实例化Adder类,再调用实例化的对象add() 发现,程序报错不能调用;

class Adder:
    def __init__(self, number):
        self.number = number

    def test(self, other):
        return self.number + other

add = Adder(5)
b = add(6)
print(b)     
结果:程序报错不能调用add 对象;

File "D:\Study\ml_practice\py\PyTorch_YOLOv1\test_xp.py", line 17, in <module>
    b = add(6)
TypeError: 'Adder' object is not callable

如果我们在这个类中添加一个__call__ ()方法,会发生什么情况呢?

class Adder:
    def __init__(self, number):
        self.number = number

    def __call__(self, other):
        return self.number + other

add = Adder(5)
b = add(6)  # 对象add可以像函数一样调用(这就是__call__ ()函数的作用)
print(b)   # 
1
结果:

输出:11
1

从上述代码可以看出实例化的对象add() 可以正常调用了,这是因为我们在类Adder中声明了__call__()方法,它允许类的实例像函数那样被调用;通过上面的的例子就可以很清楚的知道__call__()的作用了;

小结

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值