• 面向对象(二)


    类的成员

    1.字段

    静态字段和普通字段

    # class foo:
    #     country = '中国'            # 静态字段,属于类,代码加载的时候已经创建
    #     def __init__(self,name):
    #         self.name = name       #普通字段,属于对象
    # 普通字段对象只能用对象访问
    # 静态字段用类访问(尽量避免通过对象使用)
    hn = foo('河南')
    hb = foo('河北')
    print(foo.country)
    内存中存储方式:
    静态字段在内存中只保存一份
    普通字段在每个对象中都需要保存一份
    静态字段应用场景:
    通过类创建对象时,如果每个对象都具有相同的字段,那么就使用静态字段
    

    2.方法

    1.普通方法: 至少一个self, 对象调用执行
    2.静态方法: 任意参数, 类调用执行
    3.类方法 : 至少一个cls,类调用执行
    对于所有的方法,均属于类中,所以在内存中只保存一份
    class Foo:
        def __init__(self,name):
            self.name  = name
    #普通方法,对象调用执行,属于类
        def num(self):
            print(self.name)
    #把不需要通过对象调用执行的普通方法做一些改动,变成静态方法(就是python中的普通函数),通过类直接调用执行
        @staticmethod
        def show():
            print('静态方法')
    #类方法,不需要传参数,
        @classmethod
        def clas(cls):
            a = cls('a')
            a.num()
            print(cls)
    
    
    Foo.show('这是')
    obj = Foo('这是普通方法')
    obj.num()
    Foo.clas()
    

    3.属性

    由属性的定义和调用要注意一下几点

    定义时,在普通方法的基础上添加 @property 装饰器

    定义时,属性仅有一个self参数

    调用时,无需括号

              方法:foo_obj.func()

             属性:foo_obj.prop

    #属性:具有方法的写作形式,具有字段的访问形式

    class Foo1:
    def __init__(self,num):
    self.num = num
    @property
    def jisuan(self):
    a1,a2 = divmod(self.num,10)
    if a2 == 0:
    return a1
    else:
    return a1 + 1
    @jisuan.setter
    def jisuan(self,value):
    print(value)

    @jisuan.deleter
    def jisuan(self):
    print('删除')


    inp = int(input('输入:')) #输入一个
    obj = Foo1(inp) #把值封装到对象
    ret = obj.jisuan #通过字段的形式调用执行方法
    print(ret) #打印返回值

    obj.jisuan = 111 #更改
    del obj.jisuan #删除


  • 相关阅读:
    linux配置虚拟机的网络服务
    js动态生成层方法 不懂得加QQ 2270312758
    js中let和var的区别 不懂得加QQ 2270312758
    C#特性详解
    (四)python之文件处理
    (三)python之字符编码
    (二)Python之数据类型
    (一)python基础
    (2)库相关操作
    (1)初始数据库
  • 原文地址:https://www.cnblogs.com/Z-style/p/5634671.html
Copyright © 2020-2023  润新知