python第八章面向对象期末复习笔记

#第八章面向对象
"""类的成员:
一、类属性和实例属性
  1.类属性:(类内部方法外部) 类和对象都可访问 通过类修改
  2.实例属性:(方法内部) 只能由对象访问  通过对象修改
   可动态添加实例属性
二、实例方法 类方法 静态方法
  1.实例方法:(类内部,以self为第一个形参)只能通过对象调用
  2.类方法:(类内部,使用修饰器修饰 cls第一个形参) 类和对象都可以调用 可以通过cls访问修改类属性
  3.静态方法:(类内部,修饰器修饰,无默认参数) 类和对象都可以调用 方法内部不能直接访问属性或方法,但可以使用类名访问属性或调用类方法
三、私有成员
在类成员名称前添加双下划线__
私有成员只能在类内部直接访问 但可以在类外部通过类的公有方法直接访问
"""
"""特殊方法:
一、构造方法(对对象初始化) __inint__()无参   __init__(self)有参  
  1.无参构造:对象属性具有相同的初始值
  2.有参构造:对象属性具有不同的初始值
二、析构方法(销毁) __del__()销毁对现系统自动调用
"""
class A:
    whells=4   # 内属性 在类内方法外
    __whe=5  #私有属性
    def shili(self):  #实例方法
        self.whell=4  #实例属性 在方法内部声明
        print("我是实例方法")
    def lei(cls):
        print("我是类方法")
    def jingtai():
        print("我是静态方法")
    def __siyou(self):
        print("我是私有方法")
    def test(self):
        print(__whe) #访问私有属性
        self.__siyou()  #调用私有方法
a=A()  #创建对象
#print(A.whell)  #错误,实例属性只能通过对象访问
print(a.whell)  #正确
a.add()
a.whell=3   #修改实例属性
a.color="red"  #动态添加实力属性
a.test()  #通过调用公有方法访问私有属性方法
""" 封装 继承 多态
一、封装:对外隐藏类的细节,提供访问类成员的公开接口
要求:1.将属性设为私有属性
     2.添加两个供外界调用的公有方法 set(),get()方法
二、继承:子类继承父类会自动拥有父类的公有成员,不能访问父类私有成员
1.单继承:class 子类名(父类名): 
2.多继承:class 子类名{父类名1,父类名2...} 子类先继承哪个类就先调用哪个类方法
3.重写:在子类中重写与父类同名的方法,再按要求重新编写代码功能
三、多态:让不同类的同一功能通过同一接口调用,并表现出不同的行为
四、运算符重载:赋予内置运算符新功能
"""
#封装
class B:
    def __init__(self,name):
        self.name=name
        self.__age=1
    def set_age(self,new_age):  #设置接口
        self._age=new_age
    def get_age(self):   #获得接口
        return self._age
#继承
class F:
    def __init__(self,color):  #有参构造
        self.color=color  #形参赋给属性
        self.__age=1   #私有属性
    def walk(self):    #实例方法
        print("走路")
    def __text(self):   #私有方法
        print("父类私有方法")
    def text(self):
        print("F类测试")
class F2:
    def __init__(self):
      self.high=3
    def run(self):
        print("跑步")
    def text(self):
        print("F2类测试")
class Z(F,F2):
    def wolk(self):  #重写父类的walk方法
        print("小孩在走路")  #新功能
z=Z("red")  #创建子类对象
print(z.color)
#print(z._age)  #错误,子类不能调用父类私有属性方法
z.walk()
z.run()
z.text()
#多态
class Cat:
    def shout(self):
        print("喵~")
class Dog:
    def shout(self):
        print("汪~")
def shout(obj):  #定义接口
    obj.shout()
cat=Cat()
dog=Dog()
shout(cat)
shout(dog)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值