成员方法调用成员(函数调用函数)
成员方法调用成员变量
公有变量:可以访问,通过self.变量名调用
独有变量:谨慎操作
成员方法调用成员方法
self.方法名()
self仅出现在成员方法中,指代执行该方法的对象。
# 调用公有变量
class Man:
def __init__(self):
self.gender = "男"
self.name = None
def myself(self):
print("我叫%s,性别%s" % (self.name, self.gender))
man1 = Man()
# print(man1.gender) # ←错误 演示
man1.name = "吕子乔"
man1.myself() # man1.myself(man1)
运行结果
我叫吕子乔,性别男
# 调用独有变量
class Man:
def __init__(self):
self.gender = "男"
self.name = None
def myself(self):
print("我叫%s,性别%s,我很%s" % (self.name, self.gender, self.looks))
①
man1 = Man()
man1.name = "吕子乔"
# 给他一个独有变量
man1.looks = "帅"
man1.myself()
②
man2 = Man()
man2.name = "曾小贤"
man2.myself()
运行结果
我叫吕子乔,性别男,我很帅
第①部分代码不会报错
写入②部分后运行会报错因为man1.looks是独有变量man2中没有这个变量
# 成员方法调用成员方法
class Man:
def sing(self):
print("唱了一首歌")
def dance(self):
print("今天跳了一支舞")
def run(self):
print("今天跑了三千米")
def man(self):
self.sing()
self.dance()
self.run()
man1 = Man()
man1.man()
运行结果
唱了一首歌
今天跳了一支舞
今天跑了三千米
私有属性和封装
私有
对成员私有化可以有效的保护从类的外部对内部成员进行访问。
私有属性定义格式:
self._ _变量名 = 值
私有方法定义格式:
def _ _方法名(self):
方法体
class Man:
def __init__(self):
self.__id_card = None # 定义为私有属性
self.name = None
def get_id_card(self): # 用来得到获取私有变量的方法
return self.__id_card
def set_id_card("self, id_card"): # 用来设置赋值给私有变量的方法
self.__id_card = id_card
man1 = Man()
man1.set_id_card("431145")
print(man1.get_id_card())
运行结果
431145
封装
可以对受保护的成员进行功能开放的控制,达到保护数据不被非法访问的目的。
方法可以私有,封装,但是一般都用不到
提供对外访问器:
访问器(get方法):
def get_变量名(self):
return self._变量名
修改器(set方法):
def get_变量名(self, 形参):
self._变量名 = 形参