我是靠谱客的博主 光亮含羞草,最近开发中收集的这篇文章主要介绍MIT 6.00.1X (9)(10) object,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

对象(object):

对象意味着:1. 一系列数据属性

                   2. 一套访问和操作这些数据的方法


定义一个类的例子:

class Class_name(object):
#约定类的名称,首字母大写,括号号里的objcet是父类的名称,若没有则不写
def __init__(self, x, y):
'''
初始化属性x,y
'''
self.y = y
self.x = x
def getX(self):
return x
def getY(self):
return y
w1 = Clasee_name(1,2)
#创建一个Class_name的实例


特殊操作:

e.g.




class Clock(object):
def __init__(self, time):
self.time = time
def print_time(self):
print(self.time)
boston_clock = Clock('5:30')
paris_clock = boston_clock
paris_clock.time = '10:30'
boston_clock.print_time()

最后 输出的 是 10:30  

因为boston_clock and paris_clock 是一个对象的两个名字,就是他们都是一个对象了。This is called aliasing.







getter 和setter:

getter:用在class外去获得class的数据属性  (虽然可以直接获取,但是professor强调 必须要这么干)

setter:用在class外去改变class的数据属性












继承: 在初始化的时候 可以用  

Animal.__init__(self,age)

也可以用:

super().__init__(age)
这个super函数调用就指代了 父类的名称    (注意 super 的时候没有self 而用animal的时候 有self)


可以调用 eric.age_diff(john)

也可以调用 Person.age_diff(john,eric)  效果是一样的


多个超类:初始化 和 方法 继承顺序是不同的

(初始化):

初始化 看的是这个子类的初始化是什么顺序

比如下面的例子, 下面的例子D,他有两个超类C,B  在D的初始化里 他先运行C的初始化 再运行B的初始化 所以如果C,B 初始化有重叠, B将覆盖C的值 所以   D.a 的值应该是  B里面a的值

(方法):

当一个类具有多个超类的时候, 排在前面的超类的方法 将覆盖位于后面的超类 ,

也就是说我们先看排在第一个超类的   方法 ,如果没找到 再看后面的。 所以对于D来说  C B 都有方法 y  但是继承的是C的方法y

e.g.

class A(object):
def __init__(self):
self.a = 1
def x(self):
print("A.x")
def y(self):
print("A.y")
def z(self):
print("A.z")
class B(A):
def __init__(self):
A.__init__(self)
self.a = 2
self.b = 3
def y(self):
print("B.y")
def z(self):
print("B.z")
class C(object):
def __init__(self):
self.a = 4
self.c = 5
def y(self):
print("C.y")
def z(self):
print("C.z")
class D(C, B):
def __init__(self):
C.__init__(self)
B.__init__(self)
self.d = 6
def z(self):
print("D.z")

实例的变量和类的变量:

类的变量定义在class 里面 但是在class所有方法外面,包括__init__ 外面。 

1. 实例属性属于各个实例所有,互不干扰;

2. 类属性属于类所有,所有实例共享一个属性;

3. 即使在类内部 要调用 类变量  也要用 类名.变量名    如Rabbit.tag

4.不要对实例属性和类属性使用相同的名字 因为相同名称的实例属性将屏蔽掉类属性,但是当你删除实例属性后,再使用相同的名称,访问到的将是类属性。

如下图:




class 变量的作用:









生成器的意义:


最后

以上就是光亮含羞草为你收集整理的MIT 6.00.1X (9)(10) object的全部内容,希望文章能够帮你解决MIT 6.00.1X (9)(10) object所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部