赞
踩
目录
数字、字符串、元组、列表、字典、函数、方法、类、模块等等都是对象。
对象=属性+方法
属性:一个对象的静态特征
方法:对象所能做的事情
①创建一个类:
- class Turtle:
-
- # 属性
- head = 1
- eyes = 2
- shell = True
-
- # 方法
- def sleep(self):
- print("Zzzz……")
②再通过类创建对象:
t1 = Turtle()
那为什么类中的每个方法在定义时都要传入一个self参数呢?让我们先来看看self是什么
- >>> class Turtle:
- def myself(self):
- print(self)
-
- >>> t1=Turtle()
- >>> t1.myself()
- <__main__.Turtle object at 0x000001DC379B3EE0>
-
- >>> print(t1)
- <__main__.Turtle object at 0x000001DC379B3EE0>
哦~原来self就是t1对象本身,那为什么要传入self呢?是因为一个类可以创建出无数个实例对象,而只有传入了self参数才知道是哪个实例对象调用了这个类。
面向对象编程的三个基本特征:封装、继承、多态
而刚刚我们讲的内容就是封装,类提供了一个容器,把对象的属性和方法打包到一起,然后通过类生成相应的对象。
接下来我们看一看继承,通过继承创建的新类我们叫做子类,而被继承的类我们称为父类、基类或超类。
- class A:
- x=520
- def hello(self):
- print("hello A~")
-
- class B(A):
- pass
-
- #isinstance方法用作判断一个对象是否继承于一个类
- >>> b = B()
- >>> print(isinstance(b,A))
- True
- >>> print(isinstance(b,B))
- True
-
- #issubclass方法用作判断一个类是否为另一个类的子类
- >>> print(issubclass(B,A))
- True
一个类可以继承自多个类,而首先继承的属性和方法来自于继承的第一个类,如果第一个类中没有则向后查找。例如
- class A:
- x=1
- class B:
- y=2
- class C(A,B):
- pass
-
- >>> c=C()
- >>> print(c.y)
- 2
- class Turtle:
- def say(self):
- print("我要跑起来")
- class Cat:
- def say(self):
- print("喵~")
- class Dog:
- def say(self):
- print("旺~")
- class Garden:
- t=Turtle()
- c=say()
- d=Dog()
- def say(self):
- self.t.say()
- self.c.say()
- self.d.say()
-
- >>> g=Garden()
- >>> g.say
- 我要跑起来
- 喵~
- 旺~
- class C:
- def __init__(self,x,y):
- self.x = x
- self.y = y
- def add(self):
- return self.x+self.y
-
- >>> c=C(2,3)
- >>>print(c.add())
- 5
子类写一个同名的属性或方法,对父类进行覆盖,称为重写
- class C:
- def __init__(self,x,y):
- self.x = x
- self.y = y
- def add(self):
- return self.x+self.y
-
- class D(C):
- def __init__(self,x,y,z):
- C.__init__(self,x,y)
- self.z=z
- def add(self):
- return C.add(self)+self.z
-
- >>> d=D(1,2,3)
- >>>print(d.add())
- 6
用于获取父类的代理对象,以执行已在子类中被重写的父类方法
- class C:
- def __init__(self,x,y):
- self.x = x
- self.y = y
-
- class D(C):
- def __init__(self,x,y,z):
- super().__init__(self,x,y)
- self.z=z
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。