一、类的定义
类:用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例
对象:类实例化出来的叫做对象
对象和类的关系:类和对象的关系就像模具和铸件的关系,类的实例化的结果就是对象,而对对象的抽象就是类。
类和实例
面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如 Student类,而实例是根据类创建出来的一个个具体的“对象”,每个对象都拥有相同的方法,但各自的数据可能不同。
仍以 Student 类为例,在 Python 中,定义类是通过 class 关键字:
class Student(object): pass
class 后面紧接着是类名,即 Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的,继承的概念我们后面再讲,通常,如果没有合适的继承类,就使用 object类,这是所有类最终都会继承的类。
1.类定义:
- class定义类
- class 后面加 类名称 加 () 加 :
2.类名称定义规范:
- 不要以纯数字命名
- 不要以python中保留字符(关键字)来命名
- 不要以文件名命名
- 不能出现特殊字符
- 要简短且见名知义
- 当类名称中有多个单词时,应采用驼峰式(每个单词首字母大写) --> XinFangShuo()
定义好了 Student 类,就可以根据 Student 类创建出 Student 的实例,创建实例是通过类名+()实现的:
bart = Student()
可以看到,变量 bart 指向的就是一个 Student 的实例,而 Student 本身则是一个类。
由于类可以起到模板的作用,因此,可以在创建实例的时候,把一些我们认为必须绑定的属性强制填写进去。通过定义一个特殊的__init__方法,在创建实例的时候,就把 name,score 等属性绑上去:
class Student(object): def __init__(self, name, score): self.name = name self.score = score
注意:特殊方法“__init__”前后分别有两个下划线!!!
注意到__init__方法的第一个参数永远是 self,表示创建的实例本身,因此,在__init__方法内部,就可以把各种属性绑定到 self,因为 self 就指向创建的实例本身。
有了__init__方法,在创建实例的时候,就不能传入空的参数了,必须传入与__init__方法匹配的参数,但 self 不需要传,Python 解释器自己会把实例变量传进去:
bart = Student(‘Bart Simpson‘, 59)
和普通的函数相比,在类中定义的函数只有一点不同,就是第一个参数永远是实例变量 self,并且调用时,不用传递该参数。除此之外,类的方法和普通函数没有什么区别,所以,你仍然可以用默认
参数、可变参数、关键字参数和命名关键字参数。
class Four(): #类的定义 def sub(self,x,y): return x + y """ class Dog(): def __init__(self,name,age): self.name = name self.age = age def sit(self): print (self.name.title() + ‘ ‘ + "is now sitting") def roll_over(self): print (self.name.title() + ‘ ‘ + "is now roll over") my_dog = Dog(‘willie‘,6) #参数实例化 # your_dog = Dog(‘lucy‘,3) my_dog.sit() my_dog.roll_over() """ """ class Four_operations(): def __init__(self,a,b): self.a = int(a) self.b = int(b) def add(self): return self.a + self.b def reduce(self): return self.a - self.b def ride(self): return self.a * self.b def Except(self): return self.a / self.b operation = Four_operations(‘12‘,‘4‘) print operation.add() print operation.reduce() print operation.ride() print operation.Except() """
二、类的调用
调用类下的方法,必需通过类的的实例/类名()进行调用
- 当类中初始化方法__init__中存在参数时,则在实例化时,需要往实例括号中传入参数
- 当类中无初始化方法或者__init__中不存在参数时,则在实例化时,不需要往实例括号中传入参数,而在调用方法时再进行传参
class Four(): def sub(self,x,y): return x + y print Four().sub(2,3) class Four_operations(): def __init__(self,a,b): self.a = int(a) self.b = int(b) def add(self): return self.a + self.b def reduce(self): return self.a - self.b def ride(self): return self.a * self.b def Except(self): return self.a / self.b operation = Four_operations(‘12‘,‘4‘) #实例化 print operation.add() print operation.reduce() print operation.ride() print operation.Except()
三、继承
1.单继承和多继承
- 一个对象使用另一个对象的属性和方法,被继承的类也称父类
- 多重继承就是一个子类继承多个父类
class Four(): def sub(self,x,y): return x + y class Five(Four): #Five类继承了Four类 --> Five 类拥有了 Four 类下的所有函数方法 def jian(self,a,b): return a - b print Five().sub(2,5)
class Father(): def __init__(self,name,sport,sex): self.name = name self.sport = sport self.sex = sex def Surname(self): print self.name + "姓张" def hobby(self): print self.name + "like" + " " + self.sport class Son(Father): def study(self): print self.name + " " + "study very good" def Sex(self): print self.name + " " + "is" + " " + self.sex so = Son(‘张四‘,"play basketball","boy") so.Surname() so.hobby() so.study() so.Sex()
class car(): "多继承" def __init__(self,brand,type,year,mileage): self.brand = brand self.type = type self.year = year self.mileage = mileage def make(self): print self.brand + self.type + "是" + str(self.year) + "生产的!" def update_mileage(self,mile): if mile < self.mileage: print "请勿修改里程数!" class aircraft(): def __init__(self,name,destination): self.name = name self.destination = destination def bound(self): print self.name + "开往" + self.destination class boat(car,aircraft): def __init__(self,brand,type,year,mileage,name,destination): self.brand = brand self.type = type self.year = year self.mileage = mileage self.name = name self.destination = destination my_boat = boat("泰坦","尼克号",2010,500,"泰坦尼克号","宁波") my_boat.make() my_boat.bound()
四、多态(重写父类方法)
class Four(): def sub(self,x,y): return x + y class Five(Four): #Five类继承了Four类 --> Five 类拥有了 Four 类下的所有函数方法 def jian(self,a,b): return a - b def sub(self,x,y): return x * y print Five().sub(3,6)
原文地址:https://www.cnblogs.com/Mr-ZY/p/11777272.html