面向对象

类:具有相同属性和方法的一类事物

对象(实例):具体的某一个人事物

实例化:对象=类的过程

类的定义:class关键字 ,类名首字母大写

类中的属性:

动态属性:方法

静态属性:类属性

总结:

  通过init方法初始化来的

  在一个类的外面去使用一个对象,这个对象叫什么,你就用这个对象的名字去调它内部的方法和属性

  而在一个类的内部去使用一个对象,self就是这个对象本身,使用self去调用它的属性

静态属性(类属性):所有的对象共有的属性,可以直接被类调用

对象属性: 是只属于某一个对象的,必须在实例化之后用对象调用

动态属性:调用方法,方法

调用方法:

  对象点方法名

  不必传的参数:self

当类实例化的时候:自动的触发__init__方法。实例化的时候类名(参数),这个参数传给init方法

class 类名:
    def __init__(self,参数1,参数2):
        self.对象的属性1 = 参数1
        self.对象的属性2 = 参数2

    def 方法名(self):pass

    def 方法名2(self):pass

对象名 = 类名(1,2)  #对象就是实例,代表一个具体的东西
                  #类名() : 类名+括号就是实例化一个类,相当于调用了__init__方法
                  #括号里传参数,参数不需要传self,其他与init中的形参一一对应
                  #结果返回一个对象
对象名.对象的属性1   #查看对象的属性,直接用 对象名.属性名 即可
对象名.方法名()     #调用类中的方法,直接用 对象名.方法名() 即可

#对于类的静态属性:
#如果类.属性 调用的就是类中的属性
#对象.属性 先从自己的内存空间里找名字 找到了用自己的 ,没找到用类的,如果类中也没有 就报错
#关于类的动态属性(方法):
#这个方法本身就存在类中,并不会存在对象的内存中
#但是在对象调用类中的方法的时候 要依赖于一个地址簿去类中寻找对应的方法
#关于对象的属性:
#对象的属性就存在对象的命名空间中
#只能被对象调用、修改
#不能被类调用

#例1
class A:
country = '印度'
def show_name(self):
print(self.name)

a = A() #实例化对象
a.name = 'alex' #给对象创建一个name属性
a.show_name() #调用了showname方法

例2
class A:
country = '印度'
def show_name(self):
print(self.name)

a = A() #a对象
b = A() #b对象
print(A.country)
print(a.country) #先找a对象的内存 再找A的内存
print(b.country)
a.country = '中国' #给a对象创建了一个属性
print(A.country) #印度
print(a.country) #中国
print(b.country) #印度









posted @ 2017-10-16 13:48  俺老孫  阅读(85)  评论(0编辑  收藏  举报