Skip to content

Latest commit

 

History

History
106 lines (68 loc) · 2.88 KB

2.md

File metadata and controls

106 lines (68 loc) · 2.88 KB

对象、属性、方法

每个function仅负责自己的部分,只知道埋头苦干,脑袋里却没有big picture。

对象站的更高一点,他知道自己是谁、拥有什么、可以做什么。

如果对象所指的是特定的一个人,那么类就是指一类人。

类是由class 类名:定义的。像这样:

class Man:

    def __init__(self, name, chinese_name, age, height, weight):
        self.name = name
        self.chinese_name = chinese_name
        self.age = age
        self.height = height
        self.weight = weight

    def eat(self):
        self.weight = self.weight + 5
        print('After %s eats something, his weight comes to %d.' % (self.name,self.weight))

    def grown_up(self,year):
        self.age = self.age + year
        print('%d year later, the age of %s comes to %d.' % (year,self.name,self.age))

其中包含了两个部分。

属性

__init__函数的作用就是将所有传入的参数变成某个属于Man类对象的属性。

self指代的就是这个Man,而.可以理解成

self.name = name的意思其实就是他的name属性的值是传入的那个name值。

现在不是把传入的name值赋值给某个变量了,而是把它赋值给某个属于Man类对象的name属性。

方法

eatgrown_up两个函数就是属于Man类的对象可以调用的方法。

它们可以从self中获取当前对象的属性值。

下面这样的用法,其实就是对属性值进行更新。

self.weight = self.weight + 5
self.age = self.age + year

至于print内的字符串用法,只要关注打印结果就好,在step3中会详细讲的。

对象

对象通过对类进行实例化来生成。

现在我们声明一个叫做xiaoming的变量,并将一个Man类实例化后赋值给它。

xiaoming = Man('Bob','小明',12,120,40)

这里,Man后面括号中的内容即是__init__函数中所定义的要传入的参数。

xiaoming现在成为一个Man对象,其属性和方法就都设置好了。

获取属性

我们可以通过.属性名的方法来获取xiaoming的体重并打印出来。

print(xiaoming.weight)
# 40

也可以将xiaoming的年龄赋值给this_year_age再打印。

this_year_age = xiaoming.age
print(this_year_age)
# 12

执行方法

我们可以通过.方法名()来执行某种行为,例如:

xiaoming.eat()
# After Bob eats something, his weight comes to 45.

当然方法名后面的括号里也可以携带参数,因为其本身就是一个函数。例如:

xiaoming.grown_up(5)
# 5 years later, the age of Bob comes to 17.

对象的抽象程度比函数要高,因为一个Class既包含数据,又包含操作数据的方法。