python 6_面向对象
文章目录
1. 初识对象
在程序中是可以做到和生活中那样,设计表格、生产表格、填写表格的组织形式的
-
在程序中设计表格,我们称之为 设计类 :
class Student: name = None # 创建Student类,记录学生姓名
-
在程序中打印生产表格,我们称之为 创建对象 :
stu_1 = Student() stu_2 = Student() # 基于类创建对象
-
在程序中填写表格,我们称之为 对象属性赋值 :
stu_1.name = "ausgelebt" stu_2.name = "董二千" # 为对象赋予名称属性值
2. 成员方法
-
类的定义和使用
-
类的定义
class className: # class是关键字,表示要定义类 类的属性 # 类的属性,定义在类中的变量(成员变量) 类的行为 # 类的行为,定义在类中的函数(成员方法)
-
类的使用:对象 = 类名称()
-
-
成员方法
-
在类中定义成员方法和定义函数基本一致
def 方法名(self, 形参1, ......, 形参n): 方法体
-
但仍有细微差别:self关键字(成员方法定义的时候必须填写)
- 用来表示类对象本身的意思
- 当我们使用类对象调用方法的是,self会自动被python传入
- 在方法内部,想要访问类的成员变量,必须使用self
- self关键字,尽管在参数列表中,但是传参的时候可以忽略它
-
-
示例
class Student: name = None gender = 1 nationality = None native_place = None age = 20 def say_hello(self): print("hello, i am {}".format(self.name)) def say_hello2(self, s): print(s) stu = Student() stu.name = "ausgelebt" print(stu) print(stu.name) stu.say_hello() stu.say_hello2("hello")
3. 类和对象
类只是一种程序内的“设计图纸”,需要基于图纸生产实体(对象),才能正常工作
这就是面向对象编程:设计类,基于类创建对象,由对象做具体的工作
4. 构造方法
-
构造方法_ _ init _ _()
- 在创建类对象(构造类)的时候,会自动执行
- 在创建类对象(构造类)的时候,将传入参数自动传递给构造方法使用
-
注意事项
- 构造方法也是成员方法,也需要有self关键字
- 在构造方法内定义成员变量,需要用到self关键字
-
示例
class Student: name = None age = None address = None def __init__(self, name, age, address): self.name = name self.age = age self.address = address for i in range(1, 4): print("当前录入第{}位学生信息,总共需录入3位学生信息".format(i)) name = input("请输入学生姓名:") age = input("请输入学生年龄:") address = input("请输入学生地址:") stu = Student(name, age, address) print("学生{}信息录入完成,信息为:姓名:{},年龄:{},地址:{}".format(i, stu.name, stu.age, stu.address))
5. 其它内置方法
内置的类方法,各自有各自特殊的功能,这些内置方法称之为魔术方法
方法 | 功能 |
---|---|
__ init __ | 构造方法,可用于创建类对象的时候设置初始化行为 |
__ str __ | 用于实现类对象转字符串的行为 |
__ lt __ | 用于2个类对象进行小于或者大于比较 |
__ le __ | 用于2个类对象进行小于等于或者大于等于比较 |
__ eq __ | 用于2个类对象进行相等比较 |
-
_ _ str_ _字符串方法
-
控制类转换为字符串
-
返回值为字符串,内容自行定义
-
示例:
class Student: name = None age = None address = None def __init__(self, name, age, address): self.name = name self.age = age self.address = address stu = Student('ausgelebt', 20, 'JiLin') print(stu)
class Student: name = None age = None address = None def __init__(self, name, age, address): self.name = name self.age = age self.address = address def __str__(self): return "name = {}, age = {}, address = {}".format(self.name, self.age, self.address) stu = Student('ausgelebt', 20, 'JiLin') print(stu)
-
-
_ _ lt _ _ 小于符号比较方法
-
直接对两个对象进行比较是不可以的,但在类中实现__ lt __方法,即可同时完成 小于符号 和 大于符号 两种比较
-
传入self和other(另一个类对象),返回True或者False,内容自行定义
-
示例:
class Student: name = None age = None def __init__(self, name, age
-