两大编程思想
类型 | 面向过程 | 面向对象 |
---|---|---|
区别 | 事物比较简单,可用线性思维解决 | 事物比较复杂,简单的线性思维无法解决 |
共同点 | 面向对象和面向过程都是解决实际问题的一种思维方式 | |
总结 | 两者相辅相成,并不是对立的。 解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间的复杂关系、方便我们分析整个系统;具体到微观操作,仍然使用面向过程的方式来处理。 |
类与对象
类
类的定义
多个类似事物组成的群体的统称。
能够帮助我们快速理解和判断事物的性质。
数据类型
不同的数据类型属于不同的类。
类的创建
创建语法
- 类名:由一个或多个单词组成,每个单词首字母大写,其余小写。
class 类名:
属性
方法
类的组成
- 类属性
- 实例方法
- 静态方法
- 类方法
代码示例:
class Student:
native_place = '北京' # 类属性
def __init__(self, name, age): # name,age为实例属性
self.name = name
self.age = age
# 实例方法
def info(self):
print('我的名字是', self.name, ',年龄是', self.age)
# 类方法
@classmethod
def cm(cls):
print('类方法')
# 静态方法
@staticmethod
def sm():
print('静态方法')
对象
100、66、555都是int类包含的不同个例,这些个例的专业术语称为实例或对象。
Python中一切皆对象
对象的创建
对象的创建又称为类的实例化。
语法:实例名 = 类名()
stu = Student('allin', 20)
print(stu.name) # allin
stu.info() # 我的名字是 allin ,年龄是 20
Student.cm() # 类方法
Student.sm() # 静态方法
Student.info(stu) # 我的名字是 allin ,年龄是 20
有了实例,才能调用类中的内容。
调用类中的方法:对象.方法名()
;类名.方法名(对象实例)
。
类属性
类中方法外的变量称为类属性,被该类的所有对象共享。
stu1 = Student('Alun', 20)
stu2 = Student('Bill', 24)
print(stu1.native_place) # 北京
print(stu2.native_place) # 北京
Student.native_place = '天津'
print(stu1.native_place) # 天津
print(stu2.native_place) # 天津
类方法
使用@classmethod
修饰的方法,使用类名直接访问的方法。
静态方法
使用@staticmethod
修饰的方法,使用类名直接访问的方法。
动态绑定对象的属性和方法
Python是动态语言,创建对象实例后,可以动态地绑定属性和方法。
def show():
print('我是一个函数')
stu1 = Student('Alun', 20)
stu1.gender = '男' # 动态绑定属性
stu2 = Student('Bill', 24)
print(stu1.name, stu1.age, stu1.gender) # Alun 20 男
stu1.show = show # 动态绑定方法
stu1.show() # 我是一个函数
stu2.show() # AttributeError: 'Student' object has no attribute 'show'
def代码块
:在类的内部为方法,在类的外部为函数。
一个类可以创建无数个实例对象,实例对象的属性值可以不同。
为一个对象实例动态绑定的属性和方法不会影响类及其他的实例,只作用于自身。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。