# python 面向对象 # /usr/sbin/py/python # -*-coding:utf8-*- # python 中类和对象的定义 # 类:把一类事物的相同特征和动作整合到一起就是类,类是一个抽象的概念 # 对象:就是基于类而创建的一个具体的事物,把该事物的特征和动作整合到一起 具象 # python 不同于 java 和 c# 的应用 独特点可以通过函数来进行面向对象设计 def person(name, age, gender): def init(name, age, gender): return { "name": name, "age": age, "gender": gender, "run": fun_run } def fun_run(person): print("%s 在奔跑" % person["name"]) return init(name, age, gender) p1 = person("jake", 10, "mail") print(p1) p1["run"](p1) # 面向对象编程 使用class 语法去实现面向对象的设计 面向对象设计其实并不会区分语语言,c编写的linux kernal同样是面向对象设计 # 声明一个类 class people: # 类名 '这是一个测试类' name = "jake" def run(self): print("%s is running" %self.name) pass # 类体 p1 = people() # 类的调用和接口调用方式一致,不同的是类是在实例化 且实例化会返回一个结果 print(p1) print(p1.name) # python2 中 class People: 与 class People(object): 是有区别的 前者是经典类,后者为新式类 ,在python3中一样 p1.run() print(dir(people)) # 返回类中所包含的属性列表,包含默认属性 print(people.__dict__["name"]) print(people.__name__) # 类名 print(people.__doc__) # 注释文档 print(people.__base__) # 继承的类 print(people.__bases__) # 以元组的形式显示 print(people.__module__) # 显示模块 # 对象实例化 class school : age = 10 def __init__(self,name,address): print("init 函数执行") self.name = name self.address =address def teach(self): print("%s招生了" %self.name) school1 =school("北大","北京") school1.teach() print(school1.__dict__) # 实例只有数据属性,而且是通过init方法赋予的 不存在函数属性 print(school.__dict__) print(school.age) print(school1.age) school.country = "china" # 增加类属性 print(school1.country) # ? 为啥可以访问到? # python 中有一个寻址的过程, 先在实例中去找,没有就会再到类中去找 相关的属性 del school.age # 删除属性 删除的属性再被调用则会报错 # 同理增加函数属性也是如此 def eat(self,food): print("%s正在吃%s" %(self.name,food)) school.eats = eat school1.eats('apple') # 值得注意的是 类属性和全局变量的使用,其实在python中类可以理解为一类特殊的函数
python 19 面向对象以及类相关
最新推荐文章于 2024-06-21 10:37:30 发布