1.self的用法
self指的是调用该函数的对象(是一个实例)。Python中self等价于Java中的this。首先明确的是self只有在类中的方法中才会有,独立的函数或方法是不必带有self的。
# self代表类的实例,而非类
class TestDemo():
# 可将self理解为实例td
def testFn(self):
print(f"谁调用我,我就是谁,此时调用我的是{self}")
# 实例调用\_\_class\_\_属性时会指向该实例对应的类
print(f"我是按照{self.\_\_class\_\_}创建出来的")
# td为TestDemo的实例
td = TestDemo()
# 在类中方法的形参中,self参数一定要定义,但是在调用时会自动传入。
td.testFn()
2.init函数的用法
在Python中定义类经常会用到__init__函数(方法),首先需要理解的是,两个下划线开头的函数是声明该属性为私有,不能在类的外部被使用或访问。而__init__函数(方法)支持带参数类的初始化,也可为声明该类的属性(类中的变量)。__init__函数(方法)的第一个参数必须为self,后续参数为自己定义。从文字理解比较困难,通过下面的例子能非常容易理解这个概念:例如我们定义一个Box类,有width, height, depth三个属性,以及计算体积的方法:
class Box:
def setDimension(self, width, height, depth):
self.width = width
self.height = height
self.depth = depth
def getVolume(self):
return self.width * self.height * self.depth
b = Box()
b.setDimension(10, 20, 30)
print(b.getVolume())
class Box:
#def setDimension(self, width, height, depth):
# self.width = width
# self.height = height
# self.depth = depth
def __init__(self, width, height, depth):
self.width = width
self.height = height
self.depth = depth
def getVolume(self):
return self.width * self.height * self.depth
b = Box(10, 20, 30)
print(b.getVolume())
3.成员函数
类中除构造函数__init__()以外自定义的方法
1、成员函数的函数名可以自定义,但是构造函数的函数名是固定的,为__init__
2、成员函数需要手动被调用,但是构造函数在创建对象的过程中是自动被调用的
3、对于用一个对象而言,成员函数可以被调用多次,但是构造函数只能被调用一次
class Student:
#成员变量
def __init__(self):
self.name=None
self.gender=None
#成员方法: self 仅在声明时占位, 无需传递具体参数
def play(self):
print(self.name+'的性别 '+self.gender+",他在玩电脑!")
def study(self):
print(self.name+'的性别 '+self.gender+",他在看书!")
# #创建对象
stu =Student()
#赋值
stu.name='mike'
stu.gender='Woman'
#调用方法
stu.play()
stu.study()
class Student:
#成员变量
def __init__(self):
self.name=None
self.gender=None
#成员方法带参数: self 仅在声明时占位, 无需传递具体参数
def play(self,thing):
print(f'{self.name}的性别-{self.gender},他正在玩{thing}')
def study(self,thing='java'): # 默认形参
print(f'{self.name}的性别-{self.gender},他正在看{thing}')
#创建对象
stu =Student()
#赋值
stu.name='samantha'
stu.gender='Woman'
#调用方法
stu.play('电脑')
stu.study('书')