2018-04-14 开胃学习Python系列 - Object Class 基础

Python也是oop,虽然函数在Python生态系统中扮演重要角色。Python确实具有类别(classes) 可以有附加的方法(method),并被具现化为物件(object)。

实际上,虽然将在Python中使用很多object, 但是当使用interactive 环境时,我们不太可能会创建新的class,因为有点太详细冗长。






首先,我们是可以定义一个class,使用class关键字,并以冒号结尾。我几乎没有这么做过,但是我写这一篇的原因就是因为我第一次见到了self这个写法。因为大多时候做一些简单的数据出来,我没有用python创建过class,所以之前也没有写过self,和init。但这两个用法都基本是只要熟悉了就好了。

class Person:
    department = 'School of Information' 
#a class variable

    def set_name(self, new_name): #a method
        self.name = new_name
    def set_location(self, new_location):
        self.location = new_location​

class

  • 缩进于此,在class的范围
  • Python中class的名称一般称使用camel大小写, 每个单词的第一个字元用大写。
  • 不需要在物件中声明变数,您只需开始使用它们。
  • 此外class的变数可以被声明。这些只是在所有实例(instances)之间共享的变数。

方法(method)

  • 像写函数(function)一样。
  • 不同的是,要能够使用实例,在其中这一方法中被援引的,必须在方法的签名中包含self.
  • 不同的是,要能够使用实例,在其中这一方法中被援引的,必须在方法的签名中包含self.
  • 不同的是,要能够使用实例,在其中这一方法中被援引的,必须在方法的签名中包含self.
  • 同样,如果想引用实例变数设置在object上的, 要将self放在方法名字的前头,加上句号 self.

例如,在此定义中,写了两种方法(method)。
设置名称和设置的位置。这两个变化实例绑定的变数,分别称为名称和位置。






调用它的函数功能,列印出class属性,使用 点标记法(dot-notation)

person = Person()
person.set_name('Christopher Brooks')
person.set_location('Ann Arbor, MI, USA')
print('{} live in {} and works in the department {}'.format\
(person.name, person.location, person.department))
>>> Christopher Brooks live in Ann Arbor, MI, USA and works in the department School of Information
  • 在Python中的物件不具有私有或受保护成员。如果实例化一个类, 对该实例的任何方法或属性有完全存取权。
  • 不需要 用显式的构造函数(constructor),当创建Python的object。如果你想要,你可以添加一个建构函式 _init_ method,通过声明 双底线的方法。






  • Map函数是Python中函数程式语言的基础之一。函数程式语言是一种程式范例,您在其中明确声明 所有可以通过执行给定函数而改变的参数。
  • Python并不是纯粹的函数程式语言。因为有很多函数的副作用,并且不一定非 传递一切参数。

But functional programming causes one to think more heavily while chaining operations together. And this really is a sort of underlying theme in much of data science and date cleaning in particular. So, functional programming methods are often used in Python, and it's not uncommon to see a parameter for a function, be a function itself. The map built-in function is one example of a functional programming feature of Python, that I think ties together a number of aspects of the language. The map function signature looks like this. The first parameters of function that you want executed, and the second parameter, and every following parameter, is something which can be iterated upon.

map内置功能是Python的函数程式语言功能的一个例子

  • 第一个参数是你想要执行的函数,第二个参数, 和下面的每个参数,是可以反覆运算后的东西。
  • 所有可反覆运算的参数都解开在一起, 传递到给定的函数。这就是有点神秘,
  • 所以让我们来看一个例子。假设我们有两个数字列表, 也许从两个不同的商店的价格,完全相同的项目。我们想找到我们必须支付的最低价, 如果我们在两家商店之间买到便宜的商品。要做到这一点,我们可以将遍历每个列表,比较项目和 选择最便宜的。用map,我们可以做这种简单的比较。
store1 = [10.00, 11.00, 12.34, 2.34]
store2 = [9.00, 11.10, 12.34, 2.01]
cheapest = map(min, store1, store2)
cheapest
>>>

for item in cheapest:
    print(item)
#output
>>>
9.0
11.0
12.34
2.01
  • 但是,当我们去print出来,我们看到奇怪的参考值 而不是我们期待的项目列表。这被称为懒惰评估。
  • 在Python中,map函数返回给你一个map物件(object)。实际上并没有尝试在两个项目上运行min函数,直到我们查看里面的值。这是一个有趣的语言设计模式。这使得我们有非常有效的记忆体管理 即使是复杂的计算。
  • map是可以反覆运算,就像列表和元组,因此我们可以使用for回圈 来查看map中的所有值。
People = ['Dr. Christopher Brooks', 'Dr. Kevyn Collins-Thompson', 
'Dr. VG Vinod Vydiswaran', 'Dr. Daniel Romero']

def split_title_and_name(person):
    return person.split(' ')[0] + person.split(' ')[2]

list(map(split_title_and_name, people))

你可能感兴趣的:(2018-04-14 开胃学习Python系列 - Object Class 基础)