# 面向对象: Object Oriented Programming
# 面向过程: 一步一步实现
# 面向对象: 不关心过程, 将我们要实现的目的交给对象去处理
# 对象要依赖于类 , 通过类可以创建对象
# 在python中, 我们之前学过的变量都是对象, 一切皆是对象
num = 100
name = "Python"
print(type(num)) # <class 'int'>
print(type(name)) # <class 'str'>
# 类是对象的模板, 对象是类的具体实例
# 自定义类
# class 类名(父类):
# # 方法
class Student(object):
# 方法 : 面向对象叫方法, 面向过程是函数
def study(self):
print("疯狂的学习中")
# 使用类: 实例化
# 对象名 = 类名()
s1 = Student()
print(s1)
s1.study()
定义属性和使用属性
class Student(object):
def __init__(self):
# 定义属性
self.name = None
self.score = 0
# 方法 : 面向对象叫方法, 面向过程是函数
def study(self):
print(f"{self.name}疯狂的学习中, 成绩为{self.score}分")
# 使用类: 实例化
# 对象名 = 类名()
s1 = Student()
# 为对象属性赋值
s1.name = "张三"
s1.score = 89
s1.study()
s2 = Student()
# 为对象属性赋值
s2.name = "李四"
s2.score = 90
s2.study()
self 是什么
class Student(object):
def __init__(self):
self.name = None
self.score = 0
def study(self):
print(f"{self.name}疯狂的学习中, 成绩为{self.score}分")
print(f"self的地址是{id(self)}")
def show(self):
print(f"姓名: {self.name}, 分数: {self.score}")
# 哪个对象被调用, self就是那个对象
s1 = Student()
s1.name = "张三"
s1.score = 89
s1.study()
print("id(s1) = ", id(s1))
s2 = Student()
s2.name = "李四"
s2.score = 90
s2.study()
print("id(s2) = ", id(s2))
s3 = s2
print("id(s3) = ", id(s3))
构造函数
# 构造函数 __init__()方法: 当这个类被实例化时会自动调用: 一般用于初始化属性
class Student(object):
def __init__(self, name, score, gender="女"):
# print("__init__被调用")
self.name = name
self.score = score
self.gender = gender
self.money = None
def study(self):
print(f"{self.name}疯狂的学习中, 成绩为{self.score}分, 性别{self.gender}")
# s1 = Student()
# s1.name = "张三"
# s1.score = 89
# s1.study()
# 创建对象的同时就将属性初始化好
s1 = Student("张三", 100)
s1.study()
s2 = Student("李四", 100)
s2.study()
s3 = Student("王五", 33, "男")
s3.study()
from math import pi
class Circle(object):
def __init__(self, radius=1):
self.radius = radius
def getPerimeter(self):
return self.radius*2*pi
def getArea(self):
return self.radius**2*pi
circle1 = Circle()
print(circle1.radius)
print(circle1.getPerimeter())
print(circle1.getArea())
__str__和属性私有
class Student(object):
def __init__(self, name, score, gender="女"):
# print("__init__被调用")
self.name = name
self.score = score
self.gender = gender
# 属性私有化
self.__nick_name = "小小"
def study(self):
print(f"{self.name}疯狂的学习中, 成绩为{self.score}分, 性别{self.gender}")
def __str__(self):
return f"姓名 {self.name}, 成绩{self.score}"
s1 = Student("张三", 100)
s2 = Student("李四", 100)
# print(s1.__nick_name)
print(s1)
print(s2)