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*,也就是对象本身。