D07——C语言基础学PYTHON

 C语言基础学习PYTHON——基础学习D06

 

20180826内容纲要:

  面向对象进阶学习

    1 静态方法

    2 类方法

    3 属性方法

    4 类的特殊成员方法(本节重点)

    (本节重点)

    6 异常(本节重点)

    7 动态导入模块 

    8 小结

    9 练习

 

0 类的创建(补充)

 第一种方法
 第二种方法

 类是由type类实例化产生的。

那么类的创建过程是怎样的呢?类中有一个属性 __metaclass__,其用来表示该类由谁来实例化创建

所以,我们可以为 __metaclass__ 设置一个type类的派生类,从而查看类创建的过程。

 metaclass 详解文章:http://stackoverflow.com/questions/100003/what-is-a-metaclass-in-python

 __new__&__metaclass

1 静态方法  @staticmethod

 

与类无关,不能访问类里的任何变量
只是名义上归类管理,但实际上静态方法里访问不了类和实例中的任何属性。只是名义上归类管理,但实际上静态方法里访问不了类和实例中的任何属性。

复制代码
 静态方法
@staticmethod
复制代码

通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法

上面的调用会出错误,说是eat需要一个self参数,但调用时却没有传递。

没错,当eat变成静态方法后,再通过实例调用时就不会自动把实例本身当作一个参数传给self了。

 

想让上面的代码可以正常工作有两种办法

1. 调用时主动传递实例本身给eat方法,即d.eat(d) 

2. 在eat方法中去掉self参数,但这也意味着,在eat中不能通过self.调用实例中的其它变量了。这就是静态方法。

复制代码
 静态方法
@staticmethod
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信