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)