初识面向对象

一:面向对象编程

1,类的概念 : 具有相同属性和技能的一类事物。 比如:人类(抽象)

对象:就是对一个类的具体描述。 比如:具体的人(具体)

2,面向对象的特点:结局的不确定性

3,为什么要引入面向对象?

(1)使得代码之间的角色关系更加明确

(2)增强了代码的可扩展性

(3)规范了对象的属性和技能

二:查看静态变量的两种方式
1.类名.__dict__['静态变量名'] 可以查看,但是不能删改

2.类名.静态变量名 直接就可以访问,可以删改,删除一个静态变量 del 类名.静态变量名
# class Person:
#     role = 'person'   # 静态属性
#     def f1(self):     # 动态属性 方法(函数)  默认带一个参数self
#         print(1234567)
#
# print(Person.__dict__)
# print(Person.__dict__['role'])
# # 内置的双下方法(查看静态变量的第一种方式,只能查看,不能修改)
#
# print(Person.role)
# Person.role = 456
# print(Person.role)
# del Person.role
# print(Person.__dict__)
# #查看静态变量的第二种方法,可以对静态变量进行查看,修改和删除
View Code

三:引用动态变量

1.类名.方法名,查看这个方法的内存地址
2.类名.方法名(实参产生一个实例) 调用了这个方法,必须传一个实参,这个实参传给了self
class Person:
    role = 'person'  # 静态属性
    def f1(self):  # f1 叫做动态属性 ,方法(函数)  默认带一个参数self
        print(1234567)
print(Person.f1)           #<function Person.f1 at 0x00000000026F9950>
Person.f1('aa')           #1234567
View Code

四:创建一个对象

1,类名()就可以创造一个对象(实例)。

即对象=类名(),这个过程又叫做实例化。在创造对象的过程中,会创造一个新的名称空间,唯一属于这个对象。

2,在类的内部 self是本类的一个对象,

3,在类的外部,每一个对象都对应着一个名字,这个对象指向一个对象的内存空间

class Person:
    role='person'    #静态属性
    def __init__(self):   #动态属性
        print("执行了")

alex=Person()     #执行了
View Code

ps:上述程序就是实例化(创建一个对象)的过程,程序的最后一句  alex=Persion()  , 在这里alex只是一个变量,用于接收调用后的结果,在调用的过程中,alex只是接收一个变量,这个变量刚好就是创建出来的那个对象。

【注】实例化的过程分析:

(1) 首先创造一个实例,它将会作为一个实参。(开辟空间,让它和创造的实例联系起来)

(2)然后自动促发__init__的方法,并且把实例以参数的形式传递给__inin__方法中的self形参

(3)执行完__init__方法后,会将创建的实例自动返回给alex

五:在创建对象时,如何给这个对象添加属性呢?

这时就要用到__init__方法: 它是一种初始化方法,给一个对象添加一些基础属性的方法,一般情况下是针对self的赋值

程序及分析如下:

class Person:
    role='person'    #静态属性
    def __init__(self,name,sex,hp,ad):   #动态属性
        self.__dict__['name']=name
        self.__dict__['sex'] = sex
        self.__dict__['sex'] = sex
        self.__dict__['ad'] = ad
#因为此处只能返回默认的self,但是self里面内置了一个空字典,
#所以只能往self里的字典加东西,才能让外面的alex感知到,这样就有了属于sb自己的一堆属性了。

alex=Person("sb","","20","30")
print(alex.__dict__)     #{'name': 'sb', 'sex': '男', 'ad': '30'}
#self 和 alex 处于同一个内存地址,self能够查看dict,同样也可以通过alex查看。
View Code

程序也可以简化如下(注:也可以对所创建的对象的属性进行修改):

class Person:
    role='person'    #静态属性
    def __init__(self,name,sex,hp,ad):   #动态属性
        self.name=name
        self.sex = sex
        self.hp = sex
        self.ad = ad

alex = Person("sb", "", "20", "30")
alex.__dict__["name"]='sss'
print(alex.name)
View Code

六:在创建完对象后,如何对方法进行调用呢?

1,类名.方法名(对象名) # 那么方法中的self参数就指向这个对象

2,对象名.方法名()     这样写 相当于 方法中的self参数直接指向这个对象

class Person:
    role = 'person'   # 静态属性
    def __init__(self,name,sex,hp,ad):
        self.name = name     # 对象属性 属性
        self.sex = sex
        self.hp = hp
        self.ad = ad

    def attack(self):     #动态属性 ,方法(函数)
        print('%s发起了一次攻击'%self.name)

alex = Person('a_sb','',1,5)
alex.attack()      # Person.attack(alex)
View Code

 

 


































































posted @ 2018-04-11 08:36  扬帆起航111  阅读(203)  评论(0编辑  收藏  举报