Python入门学习笔记:类与面向对象(封装、多态、继承)

类与面向对象
1.Python的一切皆为对象
比如:在Python的列表学习中假定lst=[‘a’,‘b’,‘c’], 那么lst就是我们创建在list列表这个类下的对象。在idle中输入type(lst)得到结果<class ‘list’>,而输入type(list)得到结果<class ‘type’>。
2.三大重要概念

  • 封装(Encapsulation):隐藏在实例化的背后,保证一些程序数据不被外部干扰和误用。简单理解为计算机代码背后又是无数个看不见的二进制被封装。
  • 继承(Inheritance):子类继承父类(又叫超类、基类)先在子类中寻找变量名,然后找超类。因此子类可重新定义超类属性来改变子类从超类继承的行为。
  • 多态(Polymorphism):同一接口,多个方法。传入一个数据却有不同运算方法。可以简单理解为字符串的加法原则与浮点数和整数各自的加法原则(它们相加方法和所得结果不一样)。
  1. 语法注意要点

实例:只有数据属性无方法属性,而方法属于类
构造器:–init–如果没有在类中定义,那么实例在创建之初仅仅是一个简单的名称空间

class AnimalFriend:
    def __init__(self,name,age,sex='Male'):
        self.name=name
        self.age=age
        self.sex=sex
    def move(self):
        print('禽兽朋友的名字:{},年龄:{},性别:{}'.format(self.name,self.age,self.sex))
    def like(self):
        print('在爬')

class Dog(AnimalFriend):
    def __init__(self,name='西巴犬',age=1,sex='Male',height=30):
        super().__init__(name,age,sex)#调用父类初始化方法
        self.height=height
    def move(self):
        AnimalFriend.move(self)#重写父类方法
        print('{},年龄:{},性别:{}'.format(self.name, self.age, self.sex))#添加额外代码
#以下是调用方法的测试
d1=Dog(height=30)
d1.move()
d1.like()
  1. 关于object类方法

–str–()返回一个描述该对象的字符串。通常返回一个由该对象所属的类名加上该对象默认是十六进制形式的内存地址组成的字符串。
–eq–()比较两个对象是否相等,通常比较俩对象是否所指向同一个引用。“==”比较得是两个对象是否相等,也会调用这个方法。
–dir–()显示一个对象内部所有属性和方法
–dict–以字典{‘key’:’value‘}形式显示该对象内部所有属性名和属性值

print(Dog.__dict__)
#结果为:{'__module__': '__main__', '__init__': <function Dog.__init__ at 0x7fa7ed183a60>, 'move': <function Dog.move at 0x7fa7ed183af0>, '__doc__': None}
print(d1.__class__)
#<class '__main__.Dog'>
print(Dog.__bases__)
#(<class '__main__.AnimalFriend'>,)
print(Dog.__name__)
#Dog

5.类、实例和其他对象的一些内建函数
(以下均为布尔函数)
issubclass():判断类A是否是另一个类B派生 语法:issubclass(subclass,supclass)
isinstance():判断xx对象是否是给定的实例 语法:isinstance(obj,class_obj)
hasattr():判断xx对象是否是拥有指定的属性,同类:getattr(),setattr(),delattr() 语法:hasattr(obj,‘attribute’)

(…不定期更新…) to be continued

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值