黑马程序员技术交流社区
标题: python 课堂笔记---面向对象 [打印本页]
作者: Nichoals 时间: 2018-10-4 22:02
标题: python 课堂笔记---面向对象
本帖最后由 Nichoals 于 2018-10-4 22:06 编辑
1.面向对象面向对象是一种编程思想,面向过程关注的是完成工作的步骤,面向对象关注的是谁能完成工作。
2.类和对象对象是类的具体表现形式,是实际存在的个体。(类是一系列事物的统称)
特征分类:
class CapWords: #类名:大驼峰命名法
def ...(self,参数列表):
pass #占位符
def ...(self,参数列表):
pass
创建对象:
对象变量 = 类名()
对象.方法名()
3.成员方法class Cat:
def __init__(self): #init方法也称为构造方法,创建对象时为对象初始化成员变量
self.type = "波斯猫" # 公有属性/共有变量
self.name = None
cat1 = Cat() # 取值
print(cat1.type)
cat1.name = "大帅" # 赋值
print(cat1.name)
# 给cat1穿衣服
cat1.cloth = "red" # 独有属性/独有变量
print(cat1.cloth)
4.魔术方法init、str魔术方法是在类中声明、定义的方法,执行时无需手工调用,自动执行。
__ init__方法在创建对象时被运行,无需手工调用即可执行
__ str __方法是在使用print函数打印输出对象到屏幕时被调用的方法,用于返回对象的规范化字符串表现形式
def __ str__(self): return 打印对象时显示的信息代码如下:class Cat: def __init__(self): self.type = "波斯猫" self.name = None def __str__(self): return "nihao"tom = Cat()print(tom)-->nihao
5.类变量、类方法类变量不允许使用对象名进行调用修改,只能通过类名修改
cat1.subject = “猫” x
Cat.subject = "喵星人" √
类方法:@classmethod
class Cat:
subject = "猫科"
def __init__(self,name,color):
self.name = name
self.color = color
def eat(self):
print("小猫爱吃鱼")
print(self.name)
print(Cat.subject)
Cat.show_type() # print(self.show_type())
@classmethod
def show_type(cls):
print("type is none")
print(cls.subject)
print("*" * 20)
cat1 = Cat("大帅", "white")
cat1.eat()
Cat.show_type()成员方法可以调用类里面的所有属性、所有方法,还可以调用类方法。
类方法只能调用类属性
对象、类都可以调用静态方法,最好 对象.静态方法名。
6.静态方法@staticmethod
静态方法与类不紧密,可以转化成外部函数使用
7. 面向对象三大特性:封装、继承、多态
封装
封装操作可以对受访问保护的成员进行功能开放的控制,达到保护数据不被非法访问的目的
class Card:
def __init__(self):
self.id = None
self.__pwd = None
def get_pwd(self):
return self.__pwd
def set_pwd(self, pwd):
self.__pwd = pwd
def __name(self):
self.__username = None
c = Card()
c.set_pwd("123456")
print(c.get_pwd())
-->123456
继承
继承中,子类重写父类方法,执行重写后的方法
super().方法名()---在子类中访问父类中被重写的方法
class Grandpa:
def sing(self):
print("爷爷唱歌")
class Father(Grandpa):
def sing(self):
print("爸爸擅长唱歌。")
super().sing()
class Mother(Grandpa):
def sing(self):
print("妈妈唱歌很难听。")
super().sing()
class Child(Father, Mother):
def sing(self):
print("在下歌神洞庭湖")
Father.sing(self)
super().sing()
c = Child()
c.sing()
print(Child.__mro__)
# (<class '__main__.Child'>, <class '__main__.Father'>, <class '__main__.Mother'>, <class '__main__.Grandpa'>, <class 'object'>)在下歌神洞庭湖爸爸擅长唱歌。妈妈唱歌很难听。爷爷唱歌爸爸擅长唱歌。妈妈唱歌很难听。爷爷唱歌
多态
一个对象具有多种形态,在不同的使用环境中以不同的形态展示其功能,称该对象具有多态特征
class Teacher:
def teach(self):
print("教授知识")
class Driver:
def drive(self):
print("开车")
class Man(Teacher,Driver):
def teach(self):
print("教授Python知识")
def drive(self):
print("开小轿车")
class Demo:
def play(self,driver):
driver.drive()
def study(self,teacher):
teacher.teach()
# 方案一:创建司机对象
d = Driver()
# 方案二:创建了一个具有司机特征的对象
man = Man()
demo = Demo()
demo.play(man)
demo.study(man)---> 开小轿车 教授Python知识
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |