目录
类:
对象:
使用方式:
动态绑定:
全部代码:
类:
类是多个类似事物组成的群体的统称,能够帮助我们快速理解和判断事物的性质。
换句话说:类是一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用。
类的名称(类名):由一个或者多个单词组成。
起名规范:单词首字母大写,其余小写。例如Student
类(class)的组成
- 类属性:直接写在类里的变量称为类属性,类中方法外的变量称为类属性,被该类的所有对象所共享
- 实例方法:在类之内定义的函数称为方法,在类之外定义的函数称为函数
- 静态方法:使用staticmethod修饰的,为静态方法,使用类名直接访问的方法
- 类方法:由classmethod进行修饰,是类方法,使用类名直接访问的方法
class Student: # 类的名称(类名):由一个或者多个单词组成。要求每个单词首字母大写,其余小写。
native_pace = '类属性' # 直接写在类里的变量,称为类属性
def __init__(self, name, age):
# self.name 称为实例属性,进行了一个赋值操作,将局部变量的name的值赋值给实例属性
self.name = name
self.age = age
# 实例方法
def eat(self):
print('这是实例方法')
# 静态方法
@staticmethod
def method():
print('这里使用了staticmethod进行修饰,所以是静态方法')
# 类方法
@classmethod
def cm(cls):
print('这里使用了classmethod进行修饰,所以是类方法')
对象:
在Python中一切皆是对象。
对象是由类(图纸/模板)创建出来的一个具体存在(飞机),可以直接使用。
由哪一个类创建出来的对象,就拥有在哪一个类中定义的属性和方法。
程序开发,应该先有类,再有对象。
类只有一个,而对象可以有很多个。
使用方式:
类属性、类方法、静态方法等的使用方式如下:
实例方法属性:对象名.实例方法属性名,例如 stu1.name
类属性:对象名.类属性名,例如 stu1.native_pace
类方法:类名.类方法名,例如 Student.cm()
静态方法:类名.静态方法名,例如 Student.method()
实例方法:
- 调用方法1:对象名.方法名,例如 stu1.eat()
- 调用方法2:类名.方法名(类的对象),例如 Student.eat(stu1)
# 1 创建Student类的对象
# 1.1 调用方式一
stu1 = Student('张三', 23)
stu1.eat() # 对象名.方法名
print('学生姓名', stu1.name)
print('学生年龄', stu1.age)
# 1.2 调用方式二
Student.eat(stu1) # 类名.方法名(类的对象)
print('学生姓名', stu1.name)
print('学生年龄', stu1.age)
# 2 类属性的使用方式
stu1 = Student('张三', 20)
stu2 = Student('李四', 30)
print('stu1.native_pace: ', stu1.native_pace) # 访问类属性
print('stu2.native_pace: ', stu2.native_pace)
# 3 调用类方法
Student.cm()
# 4 调用静态方法
Student.method()
动态绑定:
Python是动态语言,在创建对象之后,可以动态绑定属性和方法。
动态绑定的属性和方法,只针对当前对象起作用。
# 5 动态绑定属性
stu2.gender = '女' # 为stu2动态绑定性别属性,该属性只适用于当前绑定的这个对象
print('学生2:', stu2.name, '\n年龄', stu2.age, '\n性别', stu2.gender)
# 6 动态绑定方法
def show():
print('定义在类之外的,称为函数')
stu1.show = show # 为stu1动态绑定方法
stu1.show()
全部代码:
class Student:
native_pace = '类属性' # 直接写在类里的变量,称为类属性
def __init__(self, name, age): # 初始化方法
# self.name 称为实例属性,进行了一个赋值操作,将局部变量的name的值赋值给实例属性
self.name = name
self.age = age
# 实例方法
def eat(self):
print('这是实例方法')
# 静态方法
@staticmethod
def method():
print('这里使用了staticmethod进行修饰,所以是静态方法')
# 类方法
@classmethod
def cm(cls):
print('这里使用了classmethod进行修饰,所以是类方法')
# 1 创建Student类的对象
# 1.1 调用方式一
stu1 = Student('张三', 23)
stu1.eat() # 对象名.方法名
print('学生姓名', stu1.name)
print('学生年龄', stu1.age)
# 1.2 调用方式二
Student.eat(stu1) # 类名.方法名(类的对象)
print('学生姓名', stu1.name)
print('学生年龄', stu1.age)
# 2 类属性的使用方式
stu1 = Student('张三', 20)
stu2 = Student('李四', 30)
print('stu1.native_pace: ', stu1.native_pace) # 访问类属性
print('stu2.native_pace: ', stu2.native_pace)
# 3 调用类方法
Student.cm()
# 4 调用静态方法
Student.method()
# 5 动态绑定属性
stu2.gender = '女' # 为stu2动态绑定性别属性,该属性只适用于当前绑定的这个对象
print('学生2:', stu2.name, '\n年龄', stu2.age, '\n性别', stu2.gender)
# 6 动态绑定方法
def show():
print('定义在类之外的,称为函数')
stu1.show = show # 为stu1动态绑定方法
stu1.show()
|