基于Python3版本的学习。
初识概念:类(class)与对象(object)
生活中我们所说的类,是物以类聚的类,是分门别类的类,是多个类似事物组成的群体的统称。
而在Python中我们所遇到的类(class),比如整数、字符串、浮点数等,不同的数据类型就属于不同的类。准确来说,它们的全名是整数类、字符串类、浮点数类。每一个类之下都包含无数相似的不同个例。
在Python的术语里,我们把类的个例就叫做实例 (instance),可理解为“实际的例子”。
我们可以这么想:类是某个特定的群体,实例是群体中某个具体的个体。
类和实例相当于:群体和个体。
群体里的每个个体都有着相同/相似的特征和行为。
list = [1,2]
# list 为类对象,[1,2] 为实例对象
类的创建和调用
Python里的每个类都有自己独特的属性(attribute)和方法(method),是这个类的所有实例都共享的。换言之,每个实例都可以调用类中所有的属性和方法。
属性: 描述事物是怎样的,有什么特征。
方法: 描述事物能做什么,有哪些行为和作用。
比如列表:
属性有:外层有中括号,元素之间用英文逗号隔开。
方法有:都可以做增删改操作(如 append、del等)。
类的创建
先来看一个创建电脑类的示例代码:
class Computer:
screen = True
def start(self):
print('电脑正在开机中……')
代码解释:
class Computer: 类的创建:class + 类 + 英文冒号。
screen = True 类的属性创建:通过赋值语句(即定义“是怎样的”)。
def start(self): 实例方法的创建:def + 方法名(self)。
print(‘电脑正在开机中……’) 方法具体执行过程:即定义“能做什么”。
实例方法的创建语句,和函数的定义语句很类似。
唯一不同的是:实例方法中有个必须放在首位的参数self 。
再看一个代码:
# 类名首字母大写
class Chinese:
# 用赋值语句,创建类的属性:眼睛是黑色的
eye = 'black'
# 创建实例方法时,不要漏了 self,实现功能:打印出'吃饭,选择用筷子。'
def eat(self):
print('吃饭,选择用筷子。')
类的调用:类的实例化
类的实例化,即在某个类下创建一个实例对象。
class Computer:
screen = True
def start(self):
print('电脑正在开机中……')
my_computer = Computer()
print(my_computer.screen)
my_computer.start()
上述代码,类的调用的关键在:my_computer = Computer()。
类的实例化
语法:实例名 = 类名()
意义:我们有了一个实例,一个“可调用所属类的所有属性和方法”的实例。
类的调用
语法:
实例名.属性 :my_computer.screen
实例名.方法 :my_computer.start()
再看下代码:
class Chinese: # 创建一个类
eye = 'black'
def eat(self):
print('吃饭,选择用筷子。')
wufeng = Chinese() # 类的实例化
print(wufeng.eye) # 实例调用类属性
wufeng.eat() # 调用类中的方法(传参不用管self)
类的创建和调用的步骤:
创建一个类 —— 类的实例化 —— 用实例调用类的属性和方法。
类的创建:class 语句
类的属性创建:赋值语句
实例方法的创建:def method1(self):
类的实例化:实例名 = 类名()
调用类的属性:实例名.属性
调用类的方法:实例名.方法()
创建类的两个关键点
特殊参数:self
特殊参数self的作用:self会接收实例化过程中传入的数据,当实例对象创建后,实例便会代替 self,在代码中运行。
class Chinese:
def greeting(self):
print('很高兴遇见你')
def say(self):
self.greeting()
print('我来自中国')
person = Chinese()
# 创建实例person
person.say()
# 调用say()方法
我们需要记住两点:
第一点: 只要在类中用 def 创建方法时,就必须把第一个参数位置留给 self,并在调用方法时忽略它(不用给self传参)。
第二点: 当在类的方法 内部 想调用类属性或其他方法时,就要采用self.属性名或self.方法名的格式。
特殊方法:初始化方法
定义初始化方法的格式:def __ init __(self)
由init加左右两边的 双 下划线组成( initialize “初始化”的缩写)。
初始化方法的作用在于:当每个实例对象创建时,该方法内的代码无须调用就会自动运行。
class Chinese:
def __init__ (self): # 无须调用就会自动运行
self.mouth = 1 # self.不能丢
self.eye = 2
def body(self):
print('我有%s张嘴巴' % self.mouth)
print('我有%s只眼睛' % self.eye)
person = Chinese()
person.body()
运行结果:
我有1张嘴巴
我有2只眼睛
初始化参数一般会用来执行一些默认操作,比如参数赋值,这样当调用类的时候,则默认执行初始化函数,不用手动调用。