# 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-09-11 15:37:15 发布
459

被折叠的 条评论
为什么被折叠?



