面向对象基础
1. 类和对象
1.1 类
类是指对一系列具有相同特征和行为的事物的统称,是一个抽象的概念,不是真实存在的事务
·特征 ==> 属性
·行为 ==> 方法
类是用来创建对象的
1.2 对象
对象是类创建出来的真实存在的事物
·开发中,先有类,再有对象
2. 面向对象
2.1 定义类
·语法:
class ClassName():
...
...
·注意:类名要满足标识符命名规则,习惯上遵循大驼峰命名
·拓展:经典类(不由任何内置类型派生出的类叫经典类)
2.2 创建对象
·语法
对象名 = 类名()
·创建对象的过程也叫实例化对象
2.3 self
·self指的是调用该函数的对象
class WashMan():
def wash_cloth(self):
print("wash the clothes")
print(self)
washman1 = WashMan()
print(washman1)
washman1.wash_cloth()
<__main__.WashMan object at 0x00000204897AB910>
wash the clothes
<__main__.WashMan object at 0x00000204897AB910>
·注意:打印对象和self得到的结果是一样的,都是当前对象的内存地址
3. 添加/获取对象属性
属性就是特征,比如人的身高体重等
对象的属性既可以在类外面添加和获取,也可以在类里面添加和获取
3.1 类外添加/获取对象属性
·语法
# 添加属性
ObjectName.PropertyName = Value
# 获取属性
ObjectName.PropertyName
# 添加属性
washman1.name = 'lee'
washman1.salary = 99999
# 获取属性
print(f"工具人1的名字是{washman1.name},薪水是{washman1.salary}")
工具人1的名字是lee,薪水是99999
3.2 类里面获取对象属性
·语法
self.propertyName
# TODO:define a class
class foolman():
def printinfos(self):
print(f"the name of the sb is {self.name}")
# TODO: create an object
sb1 = foolman()
# TODO: add properties
sb1.name = "gsl"
sb1.father = 'jcl'
sb1.printinfos()
the name of the sb is gsl
4. 魔法方法
4.1 __init__()
·作用:初始化对象
·注意:
1.__init__()方法在创建一个对象时会被默认调用,不需要手动调用
2.__init__(self)中的self参数,不需要开发者传递,python解释器会自动将当前对象引用传递过去
4.2 带参数的__init__()
·作用:初始化对象属性
4.3 __str__()
·作用:当使用print输出对象时,默认会打印对象的内存地址,但如果定义了__str__()方法,会打印本方法return的数据
4.4 __del__()
·作用:删除对象时,python解释器会默认调用该方法