类
在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__()的作用了;