今日内容:
1.类与对象的所有概念:__init__方法
2.类的方法与对象的方法
3.封装:隐藏细节 - 抽离代码
4.getter | setter 接口
5.父类与子类
6.多继承
# 重点:
# 1.类的属性如何定义,类的方法如何定义
# 2.对象的属性如何定义,对象的方法如何定义
# 3.什么时候定义类方法与对象方法
# 总结:对象调用类的方法
class A:
def test(self):
print(self)
pass
t=A()
t.test()
A.test(t)
A.__dict__["test"](t)
<__main__.A object at 0x00000182832E9B70> <__main__.A object at 0x00000182832E9B70> <__main__.A object at 0x00000182832E9B70>
# 类自己的方法
def add(cls,n1,n2): cls.fn() return n1+n2 def fn(): pass def a(self): self.b() def b(self): pass res=Tool.add(Tool,10,90) print(res) 》》》100
class Tool: def add(cls,n1,n2): return n1+n2 tool=Tool() print(tool.add(10,90))
""" class Tool: @classmethod def add(cls,n1,n2): # cls.test() return n1+n2 # @classmethod # def test(cls): # pass print(Tool.add(10,70)) tool = Tool() print(tool.add(100,90))
# 类方法:可以被类与对象调用的方法,第一个参数一定是类
# 类方法不建议拿对象来调用
类的方法与总结
class OldBoy: #属于类的属性 name="老男孩" # 属于对象的属性 def __init__(self,name): self.name=name # 属于累的方法 # 需求:获取机构的名字 @classmethod def get_calss_name(cls): return cls.name # 属于累的方法 # 需求:获取校区的名字 def get_school_name(cls): return cls.name
return cls.name # 类的方法使用 # 建议使用累的调用 print(OldBoy.get_calss_name())
老男孩
# 对象的适应方法 # 先创建校区 shanghai=OldBoy("上海校区") shenzhgn=OldBoy("深圳校区") print(shanghai.get_school_name() ) print(shenzhgn.get_school_name() )
上海校区 深圳校区
# 4.封装的语法与原理
# 将类中的一些功能与属性,进行隐藏,不让外界直接访问(间接访问) # 封装:对外隐藏类中一些属性与方法的实现细节 # 优点:外界不能直接访问,让内部的属性与方法具有安全保障
class A: x = 10 y = 20 def f1(self): print('f1 run') def f2(self): print('f2 run') # 找到保险箱 def get_box(self): print('找到保险箱') self.get_money() # 保险箱取钱操作 def get_money(self): print('输入密码,取出100w零花钱')
10
20
f1 run
f2 run
找到保险箱
输入密码,取出100w零花钱
封装的原理:把用__开头的名字更名为 _类名__变量名,所以直接通过 变量名 | __变量名就访问不到
# 5.封装的目的:
# 对象的属性:封装目的
# 1.对象的属性值一般都来源于外界,外界是有权力再次访问的
# 2.封装的目的不是让外界无法访问,而且不让其直接访问,可以在完成安全处理后再访问
# 3.如何做到外界还是通过变量名来对属性进行取值赋值,但是是走的方法间接拿到的值
优点:外界不能直接访问,让内部的属性与方法具有安全保障
# 6.对象属性的封装对外提供操作接口的手段
# -- __money被封装,外界还是可以通过 对象.money 取值赋值
def __init__(self, money) self.__money = money # 取值 @property # 在外界可以 对象.money 进行取值 def money(self): # print('走方法拿到的money') return self.__money # 赋值 @money.setter # 在外界可以 对象.money = 新值 进行赋值 def money(self, money): self.__money = money # 删除 @money.deleter def money(self): del self.__money