Python面向对象之类的成员

  Python面向对象的编程过程中,我们为类实例化了对象,并通过对象指针来访问类中对应的资源,那么这些资源大体分为三大部分,分别是字段、方法和属性,我们将这三大块统称为类的成员。

一、字段

  字段可以分为静态字段、动态字段,下面通过代码展示类中的两种字段

class MyClass:
    # 静态字段,属于类,多个对象共用一个静态字段
    leader = "abuve"
 
    def __init__(self):
        # 动态字段,属于对象,也可以叫普通的字段,每个对象都会有自己独有的动态字段
        self.name = "kevin"


  动态字段在类的实例化过程中很常见,通过self为每个对象封装属于自己特有的数据,但如果类中全部采用动态字段,也会遇到一些不合理的弊端,例如下面代码:

class Company:
    def __init__(self, dept, leader):
        self.company_name = "Center"
        self.dept = dept
        self.leader = leader  
          
    def ...
    
if __name__ == "__main__":    
    it_dept = Company("IT", "Abuve")
    hr_dept = Company("HR", "Kevin")


  我们通过动态字段方式为对象封装了自己独有的数据,但是这里发现公司名称company_name都为“Center”,不管创建哪个部门的对象,公司名称是不变的,我们知道动态字段存放在对象中,这样每个对象就都包含了一份company_name字段,这无疑增加了程序对内存的开销,因此更合理的方式应该使用静态字段,代码如下:

class Company:
    company_name = "Center"

    def __init__(self, dept, leader):
        self.dept = dept
        self.leader = leader    
        
    def ...
    
if __name__ == "__main__":
    it_dept = Company("IT", "Abuve")
    hr_dept = Company("HR", "Kevin")



同时在字段的调用方式上,我们也要遵循一些规则:
1、静态字段,属于类,通过类来调用访问
2、动态字段,属于对象,通过对象来调用访问

对于上述代码

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值