1 #创建一个类,类是一种具有相同属性和方法的抽象 2 #创建类需要使用class关键字,并且定义方法时,方法的第一个参数是self 3 class Student(object): 4 5 #这点与C/C++、C#的语法不同,简单区别下,定义类属性需要在特殊方法__init__内部 6 def __init__(self,name,score): 7 self.name = name #注意了,这里才是类内的属性,为类属性 8 self.score = score #同样的,这也是类属性 9 10 def fun(self): 11 print("这就是类内定义一个类的方法") 12 13 def print_name(self): 14 print(self.name) 15 16 def print_score(self): 17 print(self.score) 18 19 #实例:创建对象,并调用对象的方法 20 omega = Student("欧米茄",100) 21 omega.print_name() 22 omega.print_score() 23 24 #其他的一些实例: 25 class Person(object): 26 27 def __init__(self, name="欧米茄"): 28 self.name = name 29 30 def print_name(self): 31 print(self.name) 32 33 omega = Person() 34 omega.print_name() 35 36 37 #矩形实例: 38 class Rectangle(object): 39 40 def __init__(self,long = 0,breadth = 0): 41 self.long = long 42 self.breadth = breadth 43 44 def setRect(self): 45 try: 46 print("请输入矩形的长和宽....") 47 long = input("长:") 48 breadth = input("宽:") 49 if not long.isdigit() or not breadth.isdigit() or long == "" or breadth == "": 50 raise ValueError("输入的值错误!") 51 52 self.long = int(long) 53 self.breadth = int(breadth) 54 except: 55 print("输入错误!") 56 57 def getRect(self): 58 print("矩形长度为:%d,矩形宽度为:%d"%(self.long,self.breadth)) 59 return self.long,self.breadth 60 61 def getArea(self): 62 print("矩形面积为:",self.long * self.breadth) 63 64 rect = Rectangle(3,5) 65 rect.getArea() 66 rect.setRect() 67 rect.getRect() 68 rect.getArea() 69 70 71 #总结下: 72 """ 73 注意:上面的实例目前只能体现出封装的特性。 74 以下这些只是我先总结的,简单点,不想搞得太复杂 75 面向对象有三大基本特征:封装、继承、多态 76 封装:就是讲客观事物封装成抽象类,并对一些不可信的类隐藏信息 77 继承:主要是用于代码重用。 78 多态:Python的多态,显示在继承上,比如说A B C三个类都有add方法,print_value方法负责调用它们的add方法。 79 如果 它们同时继承与 D ,且D有add方法,那么 print_value(d): print(d.add()) 可以传入A B C三种类的对象。 80 且,调用的add函数,根据实例本身的类型。 81 82 """
值得注意的是,Python类方法的第一个参数self,这其实就是C++里的this*,也就是对象本身。