鱼C论坛

 找回密码
 立即注册
查看: 1763|回复: 0

[技术交流] 《零基础入门学习python》第41-44讲笔记

[复制链接]
发表于 2017-7-29 12:08:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 哈哈哈哦 于 2017-7-29 12:07 编辑

魔法方法

1.魔法方法总是被双下划线包围

2.类实例化对象所调用的第一个魔法方法是:__new__;
它的第一个参数是这个实例化对象(cls);
返回的是一个实例化对象。

3.__init__(self)只有在需要初始化参数时才会明确定义,返回值是None,如
# 我们定义一个矩形类,需要长和宽两个参数,拥有计算周长和面积两个方法。
# 我们需要对象在初始化的时候拥有“长”和“宽”两个参数,因此我们需要重写__init__方法


class Rectangle:
        def __init__(self, x, y):
                self.x = x
                self.y = y
        def getPeri(self):
                return (self.x + self.y) * 2
        def getArea(self):
                return self.x * self.y

>>> rect = Rectangle(3, 4)
>>> rect.getPeri()
14
>>> rect.getArea()
12

4.__del__并不是相当与调用del,只用当垃圾回收机制回收对象的时候才调用,如
>>> class B:
        def __del__(self):
                print('我在调用__del__')

                
>>> b1 = B()
>>> b2 =  b1
>>> b3 = b2
>>> del b3
>>> del b2
>>> del b1
我在调用__del__

5.反运算的魔法方法,如__radd__(self,other)。
在 a + b 中,如果a对象的__add__方法没有或无法进行相应的操作,则会调用 b 的__radd__方法

6.其他魔法方法参考
Python 魔法方法详解
http://bbs.fishc.com/thread-48793-1-1.html
(出处: 鱼C论坛)

7.类的静态属性与静态方法
静态属性:在类中直接定义的变量(没有self),引用类的静态属性使用“类名.属性名”的形式。
class C:
    count = 0  # 静态属性

    def __init__(self):
        C.count = C.count + 1  # 类名.属性名的形式引用

    def getCount(self):
        return C.count

静态方法:在普通方法的前边加上@staticmethod
class C:
        @staticmethod  # 该修饰符表示 static() 是静态方法
        def static(arg1, arg2, arg3):
                print(arg1, arg2, arg3, arg1 + arg2 + arg3)

        def nostatic(self):
                print("I'm the f**king normal method!")

静态方法并不需要self参数,因此即使是使用对象去访问,self参数也不会传进去
>>>c1 = C()
>>> c1.static(1, 2, 3)
1 2 3 6
>>> C.static(1, 2, 3)
1 2 3 6

评分

参与人数 1鱼币 +4 收起 理由
小甲鱼 + 4

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 16:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表