Python--面向对象

一、面向过程与面向对象区别:

    1.面向过程是一步一步实现的

   面向对象则是找一个对象来实现,且对象必须是会这个功能的。

   面向对象:

     1.类:是抽象的,大范围;具备共同点,将共同点抽离出来,放到一个模板(模块)中。

      2.对象:具体的

  2.对象来自于类

    静态行为:属性(用变量来存储)

    动态行为:方法

二、创建一个类

  

class Person( object):
        def xxxx():
            ....
  类的命名规则:
        大驼峰 Person....

三、初始化方法: __init__

class Dog:
    def __init__(self,name,age):
            self.name = name
            self.age = age
    def showinfo(self):
            print("name:%s,age:%d"%(self.name,self.age))
dog = Dog("大黄", 2)
dog.showinfo()

  1.封装一个student类

  

 1 # 一个student类的封装
 2 class student:
 3     def __init__(self,name,age,gender):
 4         self.name = name
 5         self.age = age
 6         self.gender = gender
 7     def study(self):
 8         print(self.name+"爱学习")
 9     def eat(self):
10         print(self.name+"爱吃饭")
11     def showInfo(self):
12         print("name:%s,age:%d,gender:%s"%(self.name,self.age,self.gender))
13 stu = student("小敏",18,"")
14 stu.showInfo()
15 stu.study()
16 stu.eat()

四、magic(魔法方法):在python中,有一些内置好的特定的方法,这些方法在进行特定的操作时会自动被调用,称之为魔法方法

  1.__init__

  2.__str__

    

 1 class Dog():
 2     def __init__(self,breed,color,age):
 3         self.breed = breed
 4         self.color = color
 5         self.age = age
 6     #狗叫
 7     def shout(self):
 8         print("汪汪汪---")
 9     #自我介绍
10     def Zwjs(self):
11         #调用当前类中其他的成员方法
12         self.shout()
13         print("breed:%s color:%s age:%d"%(self.breed,self.color,self.age))
14     # 重写父类的方法
15     def __str__(self):
16         print('_str_被调用')
17         #修改为:返回当前对象的信息
18         return "[Dog: breed:%s color:%s age:%d]"%(self.breed,self.color,self.age)
19 dog1 = Dog("","blue",2)
20 #手动调用
21 dog1.Zwjs()
22 #打印dog1的具体信息,python解释器,默认调用_str_()方法
23 #打印dog1的信息,本质是打印_str_的return的值
24 print(dog1)

五、私有属性:只能内部可见,只能类的内部使用,双下划线来定义私有属性

  

 1 class Hero:
 2     def __init__(self,name,gender,age):
 3         #self.__name = name
 4         self.setName(name)
 5         elf.__gender = gender
 6         # self.__age 可以将属性保护起来,类的外部无法访问
 7         #self.__age = age
 8         self.setAge(age)
 9     def setName(self,name):
10         self.__name = name
11     def setAge(self,age):
12         if age > 0:
13             self.__age = age
14         else:
15             print("年龄不合理,设置默认年龄1")
16             self.__age = 1
17     def __str__(self):
18      return
19 'class:Hero'+'['+self.__name+','+self.__gender+','+str(self.__age)+']'
20 h1 = Hero('陈独秀','',-100)
21 # 直接修改不合理,可以给任意值
22 # 属性保护之后,无法通过直接访问的方式进行访问,有利于数据安全
23 h1.age = -200
24 print(h1)    

 

posted @ 2018-04-01 20:21  TiAmo_yu  阅读(185)  评论(0编辑  收藏  举报