一、类的定义
1、类的组成:
eg:
输入:
class Student:
native_place = "云南"
# 类属性
def init(self, name, age):
self.name = name
self.age = age
# name, age为实例属性
def info(self):
print("我的名字叫:", self.name, "n年龄是:", self.age)
def eat(self):
print("学生在吃饭")
# 实例方法
@classmethod
def cm(cls):
print("类方法")
# 类方法
@staticmethod
def sm():
print("静态方法")
# 静态方法
二、关于对象
1、对对象的操作:
输入:
class Student:
native_place = "云南"
# 类属性
def __init__(self, name, age):
self.name = name
self.age = age
# name, age为实例属性
def info(self):
print("我的名字叫:", self.name, "年龄是:", self.age)
def eat(self):
print("学生在吃饭")
# 实例方法
@classmethod
def cm(cls):
print("类方法")
# 类方法
@staticmethod
def method():
print("静态方法")
# 静态方法
stu1 = Student("ww", 19)
print(stu1)
stu1.eat()
Student.eat(stu1)
# 这两句效果一致
stu1.info()
print(stu1.name)
print(stu1.age)
Student.cm()
Student.method()
输出:
<__main__.Student object at 0x0000020AC1ABBE80>
学生在吃饭
学生在吃饭
我的名字叫: ww 年龄是: 19
ww
19
类方法
静态方法
2、动态绑定属性:
输入:
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
# name, age为实例属性
def eat(self):
print(self.name, "在吃饭")
stu1 = Student("ww", 19)
stu2 = Student("zwj", 8000)
stu1.gender = "女"
stu2.gender = "狗"
print(stu1.name, stu1.age, stu1.gender)
print(stu2.name, stu2.age, stu2.gender)
输出:
ww 19 女
zwj 8000 狗
3、动态绑定方法:
输入:
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
# name, age为实例属性
def eat(self):
print(self.name, "在吃饭")
stu1 = Student("zwj", 8000)
def dress():
print("a")
stu1.dress = dress
stu1.dress()
输出:
a
三、面向对象三大特征
1、封装:把属性的一系列方法包含在一个类里面
2、继承:
输入:(Student 和 Teacher 继承了 Person)
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def info(self):
print(self.name, self.age)
class Student(Person):
def __init__(self, name, age, score):
super().__init__(name, age)
self.score = score
class Teacher(Person):
def __init__(self, name, age, year):
super().__init__(name, age)
self.year = year
stu = Student("zwj", 80, 110)
tea = Teacher("hxc", 8000, 7980)
stu.info()
tea.info()
输出:
zwj 80
hxc 8000
注:一个子类可以有多个父类