面向对象_成员

2020-07-19  本文已影响0人  qjh_py

目录

  1. 成员
  2. 字段介绍
  3. 方法介绍
  4. 属性

1. 成员

成员介绍
类的成员可分为字段、方法以及属性。

2. 字段介绍

前一篇文章中的属性,更准确来说被称为字段。字段又主要可以分为普通(实例)字段与静态(类)字段。

但是这样实现,会有相应的问题。比如说,普通字段保存在对象中,也就是说,当存对象的字段值相同时,仍然使用普通字段便会造成我们内存的浪费。

3. 方法介绍

类的方法主要可分为普通方法(实例方法),类方法,静态方法。
普通方法(实例方法)

class Demo:

    @classmethod        # 通过@classmethod装饰器将方法转为静态
    def clasmd(cls):    # 自建cls参数 代指 当前类
        print(cls)      # <class '__main__.Demo'>

d = Demo()
Demo.clasmd()    # 通过 类名 调用

4. 属性

在实际开发中,为了简便,当想访问方法以属性的访问形式时,就可以通过在方法上面添加@property装饰器,达到该效果。
定义及访问如下:

class Demo:
    def __init__(self):
        self.name = "rose"

    @property
    def test(self):
        print(self.name)

d = Demo()
d.test    # 通过@property 以 普通属性 形式访问 普通方法 (不带方法的括号,即不是调用) 
# rose
d.test()
# rose
# TypeError: 'NoneType' object is not callable

具体实现代码如下:

class Demo:
    def __init__(self):
        self.name = "rose"

    @property
    def test(self):     # 只可访问模式
        print(self.name)

    @test.setter        # d.set_test = "jack"
    def test(self,para):
        self.name = para
        print(self.name)

    @test.deleter
    def test(self):    # del d.test 
        del self.name
        print(self.name)  # 报错  self.name已被删除

d = Demo()
d.test            # 通过@property 只读模式

# 改变self.name的值
d.test = "jack"   # 给方法传参 以 赋值方式 会触发@test.setter

# 删除self.name
del d.test        # del 会 触发 @test.deleter
上一篇 下一篇

猜你喜欢

热点阅读