23.python入门基础--类与对象的属性与使用方法

今日内容:
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

  

猜你喜欢

转载自www.cnblogs.com/mofujin/p/10732624.html
今日推荐