python 2 Dec 11 - Dec 14

Dec 11

08.05 special method 特殊方法

Python 使用 __ 开头的名字来定义特殊的方法和属性,它们有:
- __init__() : 构造方法
- __repr__()
- __str__()
- __call__()
- __iter__()
- __add__()
- __sub__()
- __mul__()
- __rmul__()
- __class__
- __name__

事实上,__new__()才是真正产生新对象的方法,__init()__只是对对象进行了初始化,所以 leaf = Leaf()相当于:

my_new_leaf = Leaf.__new__(Leaf)
Leaf.__init__(my_new_leaf)
leaf = my_new_leaf

表示方法 repr() 和 str()

class Leaf(object):
    def __init__(self, mass_mg):
        self.mass_mg = mass_mg

    # 这样 mass_oz 就变成属性了
    @property
    def mass_oz(self):
        return self.mass_mg * 3.53e-5

这里mass_oz是一个只读不写的属性(注意是属性不是方法),而mass_mg是可读可写的属性。不过可以通过改变mass_mg的方法来改编mass_oz的值。(详细 def mass_oz

继承 inheritance

首先定义一个父类:

class Leaf(object):
    def __init__(self, color="green"):
        self.color = color
    def fall(self):
        print "Splat!"

定义一个子类继承自Leaf:(用class MapleLeaf(Leaf))

class MapleLeaf(Leaf):
    def change_color(self):
        if self.color == "green":
            self.color = "red"

如果想对父类的方法进行修改,只需要在子类中重定义这个类即可(重写)。

super()函数

     super(CurrentClassName, instance)
     #返回该类实例对应的父类对象。

公有,私有和特殊方法,属性

  • special 方法属性:即以__开头和结尾的方法和属性
  • 私有方法和属性:即以__开头,不过不是真正私有,而是可以调用的
  • 其他都是公有的方法和属性
  • 以__开头不以__结尾的属性是更加特殊的方法,调用方式也不同
class MyClass(object):
    def __init__(self):
        print "I'm special!"
    def _private(self):
        print "I'm private!"
    def public(self):
        print "I'm public!"
    def __really_special(self):
        print "I'm really special!"
m = MyClass()
#I'm special!

m.public()
#I'm public!

m._private()
#I'm private!

m._MyClass__really_special()
#I'm really special!
多重继承

多重继承,指的是一个类别可以同时多于一个父类继承行为与特征的功能。python支持多重继承的。

class Leaf(object):
    def __init__(self, color='green'):
        self.color = color
class ColorChangingLeaf(Leaf):
    def change(self, new_color='brown'):
        self.color = new_color
class DeciduousLeaf(Leaf):
    def fall(self):
        print "Plunk!"
class MapleLeaf(ColorChangingLeaf, DeciduousLeaf):
    pass

以上例子中,MapleLeaf就使用了多重继承,它可以使用两个父类的方法。

如果同时实现了不同的接口,那么最后使用的方法以继承的顺序为准,放在前面的优先继承。

class Leaf(object):
    def __init__(self, color='green'):
        self.color = color
class ColorChangingLeaf(Leaf):
    def change(self, new_color='brown'):
        self.color = new_color    
    def fall(self):
        print "Spalt!"
class DeciduousLeaf(Leaf):
    def fall(self):
        print "Plunk!"
class MapleLeaf(ColorChangingLeaf, DeciduousLeaf):
    pass

以上例子中,类ColorChangingLeaf和DeciduousLeaf都有方法”fall()”, 那就以第一个继承的ColorChangingLeaf为准。

更复杂的继承

class A(object):
    pass
class B(A):
    pass
class C(A):
    pass
class C1(C):
    pass
class B1(B):
    pass
class D(B1, C):
    pass

声明D的调用顺序:
[__main__.D, __main__.B1, __main__.B, __main__.C, __main__.A, object]

09 - 01. introduction and installation

Theano简介及其安装

Theano 是一个 Python 科学计算库,允许我们进行符号运算,并在 CPUGPU 上执行。
它最初由 Montreal 大学的机器学习研究者们所开发,用来进行机器学习的计算。
按照官网上的说明,它拥有以下几个方面的特点:
- 与 Numpy, Scipy 的紧密结合
- GPU 加速
- 高效的符号计算
- 速度和稳定性
- 动态生成 C 代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值