zoukankan      html  css  js  c++  java
  • python面向对象的成员、属性等


    #类成员:
    #字段 self.xy =qq 。 xy=qq
    #普通字段 (保存在对象里面)
    #直接通过点(.)+ 字段 进行调用
    #静态字段 (保存在类里面)
    #静态字段属于类,在内存只保留一份 。 把公共的字段 放到类中 ,节省内存等好处
    #代码从上到下解释到类就创建了
    #可以通过 类.静态字段 进行访问
    #方法 def xx()
    # (保存在类里面)
    #通过点(.) + 方法名 + 括号 进行调研
    #通过 类 点(.) 方法名也可以调用 。 还是要在前面先实例化一个对象


    #静态字段
    class human:
    address = "earth" #静态字段
    def __init__(self,age):
    self.age = age # 普通字段

    h1 = human('20')
    print(human.address) #通过类访问 静态字段
    print(h1.address) #通过对象访问 静态字段 : 对象--> 类 --> 静态字段
    print(h1.age) #通过对象访问 普通字段


    #静态方法
    class Foo:
    def bar(self):
    print('普通方法')
    @staticmethod # 添加此装饰器后变成静态方法
    def bar1(a): # 此处已经不需要self 了
    print('静态方法:%s' %a)

    #f=Foo() # 不需要创建对象,也可以直接调用静态方法 (相当于一个函数了)
    Foo.bar1(100) #通过类直接调用


    #类方法
    class Foo:
    @classmethod
    def classmd(cls): # cls 和 self意义差不多 ,此处写成 cls 。 cls 是当前类
    print(cls) # cls 是类名,自动会传入
    print('类方法')

    Foo.classmd()



    #属性
    class Foo:
    @property # 加了这个装饰器,p1 这个方法 调用起来就也可以和字段一样调用了。
    def p1(self):
    return 123
    @p1.setter
    def p1(self,var):
    print(var)
    @p1.deleter
    def p1(self):
    print('xx')
    obj = Foo()
    r=obj.p1 # 直接调用不需要括号 , 会直接调用 @property 下的 p1
    print(r)
    obj.p1=100 # 给他赋值(实际不会赋值), 会执行@p1.setter 下面的p1 (里面具体想做什么,你可以自己写) # 就是一个语法对应关系 和 赋值没关系
    del obj.p1 # 删除它 (实际不会删除它), 会执行 @p1.deleter 下面的p1 # 就是一个语法对应关系 del 只是语法 不会删除的



  • 相关阅读:
    boost::asio发送与传输相关的几个函数,备忘
    当ASIO::ASYNC_READ与SOCKET的ASYNC_READ_SOME的区别
    boost::asio keepalive
    boost asio ——深入框架
    Boost.Asio和ACE之间关于Socket编程的比较
    OCP-1Z0-052-V8.02-15题
    JavaScript对象和数组
    Oracle 11g New 使用RMAN 增强功能
    Flex中集合的类型
    Flex中基于列表的一系列MX组件及相互关系
  • 原文地址:https://www.cnblogs.com/fanxuanhui-linux/p/7782757.html
Copyright © 2011-2022 走看看