面向对象

初识面向对象:

1.面向过程:

      一切一以事物的流程为核心,核心是"过程" 二字,过程是指解决问题的步骤. 

      优点:负责的问题流程化,编写相对简单    

      缺点:可扩展性差

2.面向对象 :

       一切以对象为中心

      优点:可扩展性强    

      缺点:编程的复杂性高于面向对象

3.面向对象如何编写:

      在代码中定义一个类

 

4. 什么是类:

      具有相同属性和方法的一类事务(框架 模子)

      而是规范了一类物体有哪些共同的属性和方法(技能)

5.在类中直接可以定义的内容:
         静态属性 : 这个类拥有的,所有的对象都共享的属性
         动态属性 : 方法定义在类中的函数,描述的是所有对象共享的行为

6.类名的作用:
                    实例化的时候 对象 = 类名()
          操作静态属性

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

1 class 类名:      #在代码中定义一个类
2      pass

8.什么是对象: 

      调用模子得到的结果 : 对象(具体的)
      根据模子的规范,填上具体的值就是一个对象了

9.对象名的作用:
         操作对象的属性
         调用方法

1  class Person:    # 定义一个人类    [Person 人类:po shen]
2          pass
3 alex=person()     #alex是一个person类的对象
            #每次创建一个新的对象都会有一个新的内存地址,也就是每个对象都拥有自己的内存地址

 10.什么是构造方法:

    构造方法是创建对象的时候自动调用的

1 class Person:                   # 定义一个人类    [Person 人类:po shen]
2     def __init__(self,name,sex,hp,mp,ad):  #构造方法  本身就存在的内置方法
3 alex=person("alex","不详",10,10,0.1)     #self是一块内存空间 一调用person ,self就会自动开辟一块空间

11.什么是属性:  

      属于对象的值 - 对象属性

12.什么是实例 

      实例完全和对象是一样的

13..什么是实例化:

     是由类创建对象的过程

14..实例化的过程

      1.创建一个属于对象的空间
           2.将这个空间的地址和参数传递给__init__方法
           3.执行init方法
           4.将对象的空间返回给对象名

1  class Person:    # 定义一个人类    [Person 人类:po shen]
2     def __init__(self,name,sex,hp,mp,ad):   #构造方法 
3          self.name=name     # 属性 属于对象的值 - 对象属性
4          self.sex=sex        
5          self.hp=hp          
6          self.mp=mp         
7          self.ad=ad  
alex=person("alex","不详",10,10,0.1) #alex=self
                      #通过person类创建了一个alex对象或创建了一个alex实例  这个过程叫实例化过程  

15.什么是方法:

    一个函数,在类当中定义函数,就是方法,方法自带self参数

 1    class Person:    #
 2        COUNTRY = '牧师'       # 静态属性类属性 属于类的 所有属于这个类的对象都共同的属性
 3       def __init__(self,name,sex,hp,mp,ad):
 4            self.name = name   # 属性 属于对象的值 - 对象属性
 5           self.sex = sex
 6            self.hp = hp
 7            self.mp = mp
 8            self.ad = ad
 9        def attack(self):     # 一个函数,在类当中定义函数,就是方法,方法自带self参数
10                              # 动态属性

16.方法和函数的区别?

    函数独立的 不需要传递self

    方法是写在类里面的函数 需要传递self

17.什么是对象的属性 : 

      存储在实例化之后创建的空间中的所有变量都是对象的属性
         每一次实例化产生的空间都是独立的,每一个对象都有自己的属性值

18.什么是动态属性:

               定义在类中的函数,自带一个self,就是调用这个方法的对象本身

 19.什么是静态属性 : 

      所有的这个类的对象都共有的属性

 1  class Person:    #
 2      COUNTRY = '牧师'       # 静态属性类属性 属于类的 所有属于这个类的对象都共同的属性
 3     def __init__(self,name,sex,hp,mp,ad):
 4          self.name = name   # 属性 属于对象的值 - 对象属性
 5         self.sex = sex
 6          self.hp = hp
 7          self.mp = mp
 8          self.ad = ad
 9      def attack(self):     # 一个函数,在类当中定义函数,就是方法,方法自带self参数
10                             # 动态属性
11          print('%s发起了攻击'%self.name)
12 
13  alex = Person('alex','不详',10,10,0.1)
14  如何调用attack方法?
15  alex.attack()  # Person.attack(alex)

20.类与对象的关系:

    类是对事物的总结,抽象的概念,类用来描述对象.对象是类的实例化的结果,对象能执行哪些方法,都由类来决定,类中定义了什么,对象就拥有什么

 21.面向对象中的self指的是什么?

    self:表示当前类的对象. 当前正在执行这个动作的对象

22.属性的增删改查:

 1   class Person:    # 定义一个人类    [Person 人类:po shen]
 2      def __init__(self,name,sex,hp,mp,ad):   #构造方法 
 3           self.name=name     # 属性 属于对象的值 - 对象属性
 4           self.sex=sex        
 5           self.hp=hp          
 6           self.mp=mp         
 7           self.ad=ad  
 8 alex=person("alex","不详",10,10,0.1) #alex=self
 9 
10 查看属性:
11 print(alex.hp)
12 增加属性:
13 alex.level=1
14 print(alex.level)
15 修改属性:
16 alex.hp=9
17 print(alex.hp)
18 删除属性:
19 del alex.level   #报错  AttributeError 这属性不存在
print(alex.__dict__) #查看alex的所有属性以一个字典的形式返回
也可以通字典的value的值修改对属性对应的值
alex.__dict__["name"]="alex_ss"

人狗大战:

 class Person:    # 定义一个人类    [Person 人类:po shen]
    def __init__(self,name,sex,hp,mp,ad): #构造方法
属性      self.name=name     # 每一个角色都有自己的昵称
         self.sex=sex      # 每一个角色都有自己的性别
         self.hp=hp       # 每一个角色都有自己的生命值
         self.mp=mp         # 每一个角色都有自己的蓝
         self.ad=ad      # 每一个角色都有自己的攻击力

     def attack(self,dog):             #方法 [attack 攻击:e tai k]
         print('%s攻击了%s'%(self.name,dog.name)) # 人可以攻击狗,这里的狗也是一个对象。
         dog.hp -= self.ad           # 人攻击狗,那么狗的生命值就会根据人的攻击力而下降

class Dog:   # 定义一个狗类
     def __init__(self,name,kind,hp,ad): #构造方法
         self.name=name   # 每一只狗都有自己的昵称;
         self.kind=kind    # 每一只狗都有自己的品种;
         self.hp=hp         # 每一只狗都有自己的生命值;
         self.ad=ad         # 每一只狗都有自己的攻击力;

     def bite(self,Person):     # 狗可以咬人,这里的狗也是一个对象。 [bite :咬 bai t]
         print('%s咬了%s'% (self.name,Person.name))
         Person.hp  -= self.ad   # 狗咬人,那么人的生命值就会根据狗的攻击力而下降

alex=Person("alex","男",10,80,0.1)  #创造了一个实实在在的人alex
haha=Dog("二哈","不详",999,998,)        #创造了一只实实在在的狗haha

print("狗的血是%s" %haha.hp)    #输出狗的血 999
alex.attack(haha)               #alex攻击了狗
print("二哈的血还剩%s" %haha.hp)  #狗的血剩 998.9

print("alex的血是%s" %alex.hp)    #输出alex的血 10
haha.bite(alex)                   #狗咬了alex
print("alex的血还剩%s" %alex.hp)   #alex的血剩 -988

练习1

 1 """
 2 1.写一个圆形类
 3 描述所有的圆形的 半径 周长 面积
 4 半径是属性 参数
 5 周长和面积是方法  -  根据半径计算而来的
 6 """
 7 from math import pi
 8 class Circle:           #定义了一个圆形类;提供计算面积(area)和周长(perimeter)的方法
 9     def __init__(self,radius):
10         self.radius = radius
11 
12     def area(self):
13         return pi*self.radius*self.radius
14 
15     def perimeter(self):
16         return 2 * pi * self.radius
17 
18 circle =Circle(10) #实例化一个圆
19 areal = circle.area() #计算圆面积
20 per1=circle.perimeter()#计算圆周长
21 print(areal,per1) #打印圆面积和周长

练习2

 1 """创建⼀个武松. 武松可以打老虎, 杀嫂⼦, 替天行道"""
 2 class Haohan:
 3     def __init__(self,name,waihao,jineng):
 4         self.name=name
 5         self.waihao=waihao
 6         self.jineng=jineng
 7 
 8     def ganlaohu(self):
 9         print("%s,%s在干老虎" % (self.waihao,self.name))
10 
11     def shasaozi(self):
12         print("%s,%s在杀嫂子" %(self.waihao,self.name))
13 
14     def titianxingdao(self):
15         print("%s,%s在替天行道" %(self.waihao,self.name))
16 
17 wusong=Haohan("武松","行者","喝酒")
18 wusong.ganlaohu()
19 wusong.shasaozi()
20 wusong.titianxingdao()

练习3

 1 """⽤用⾯面向对象的思维来完成⽤用户登录. """
 2 class Account:
 3 
 4     def __init__(self, username, password):
 5         self.username = username
 6         self.password = password
 7 
 8     def login(self):
 9         if self.username == "alex" and self.password == '123':
10             return True
11         else:
12             return False
13 
14 acc = Account("alex", "1234")
15 print(acc.login())

  

    

原文地址:https://www.cnblogs.com/baoshuang0205/p/9991385.html