面向对象1
面向对象的优点:
面向对象编程是一类相似功能函数的集合,使代码更清晰化,更合理化。
面向对象,是一个公共模板类,从中实例化出对象。对象拥有这一类的的属性和方法,也有自己的属性和方法
创建类
class Human: #class定义一个类,Human为类名,类名使用驼峰型命名,首字母大写
"""
创建一个Human类
"""
mind = "有思想" #第一部分:静态属性|属性|静态变量|静态字段
dic = {}
lst = []
def fire(self): #第二部分:方法|动态属性|函数
print("使用火")
从类名的角度研究类
类名操作静态属性
类名.__dict__ 查看类的所有内容
class Human:
"""
创建一个Human类
"""
mind = "有思想"
dic = {}
lst = []
def fire(self):
print("使用火")
print(Human.__dict__)
print(Human.__dict__["mind"])
Human.__dict__["mind"]= "脑残"
print(Human.__dict__) #报错
#通过这种方式只能查询,不能增删改
#此方式一般只用于查看全部内容,不查询单独属性
类名+"."查询类的某一内容
class Human:
"""
创建一个Human类
"""
mind = "有思想"
dic = {}
lst = []
def fire(self):
print("使用火")
print(Human.mind) #查
Human.mind = "脑残" #改
print(Human.mind)
del Human.mind #删
Human.communication = "语言" #增
print(Human.communication)
类名操作动态方法
除了静态方法和类方法,一般不会通过类名操作类中的方法。
从对象的角度研究类
对象产生
对象是从类中实例化出来的,类名+(),就是一个实例化过程。
class Human: mind = "有思想" dic = {} lst = [] def fire(self): print("使用火") human_1 = Human() #类名+(),实例化一个对象
在实例化过程中会自动调用__init__方法
class Human:
mind = "有思想"
def __init__(self):
print("调用了__init__")
print(f"我是self:{self}")
def fire(self):
print("会使用火")
human_1 = Human() #只要实例化对象,就会自动执行类中的__init__方法
print(f"我是human_1:{human_1}")
# 调用了__init__
# 我是self:<__main__.Human object at 0x00000000021E8DD8>
# 我是human_1:<__main__.Human object at 0x00000000021E8DD8>
#self 的内存地址与 human_1的内存地址相同
实例化一个对象共发生了三件事:
1.在内存中开辟了一个对象空间。
2.自动执行类中__init_方法,并将这个对象空间传给了__init__方法的第一个位置参数self。
3.在__init__方法中通过self给对象空间添加属性
class Human: mind = "有思想" def __init__(self,name,age): #self 和human_1的内存地址是同一个 self.name = name self.age = age def fire(self): print("会使用火") human_1 = Human("Jame",25) print(human_1.name) #Jame print(human_1.age) #25
对象操作对象空间属性
对象.__dict__ 查询对象的所有属性。
class Human:
mind = "有思想"
def __init__(self,name,age):
self.name = name
self.age = age
human_1 = Human("Jame",25)
print(human_1.__dict__)
print(human_1.__dict__["age"])
# {'name': 'Jame', 'age': 25}
# 25
对象+"."操作对象的单个属性
class Human: mind = "有思想" def __init__(self,name,age): self.name = name self.age = age human_1 = Human("Jame",25) print(human_1.name) #查 human_1.name = "Danny" #改 print(human_1.name) human_1.work = "IT" #增 print(human_1.work) del human_1.work #删
对象查看类中的属性
class Human: mind = "有思想" communication = "语言" def __init__(self,name,age): self.name = name self.age = age human_1 = Human("Jame",25) print(human_1.communication) human_1.mind = "脑残" #在对象的内存空间创建了一个mind属性,未修改类中的属性 print(human_1.mind) print(Human.mind) # 语言 # 脑残 # 有思想
对象操作类中的方法
class Human: mind = "有思想" def __init__(self,name,age): self.name = name self.age = age def fire(self): print("使用火") human_1 = Human("Jame",25) human_1.fire()
#使用火
类中的方法一般(除去类方法和静态方法外)都是通过对象执行的。
对象执行类中的方法时,会自动将对象空间传给方法中的第一个参数,把类中方法的第一个参数预定俗成为self,代表的是调用这个方法的对象。
面向对象初识
浙公网安备 33010602011771号