Python修炼10------面向对象

面向对象-----类

类:类是一种数据结构,就好比一个模型,该模型用来表述一类事物(事物即数据和动作的结合体),用它来生产真实的物体(实例)。

对象:什么叫对象:睁开眼,你看到的一切的事物都是一个个的对象,你可以把对象理解为一个具体的事物(事物即数据和动作的结合体)

类与对象的关系:对象都是由类产生的,上帝造人,上帝首先有一个造人的模板,这个模板即人的类,然后上帝根据类的定义来生产一个个的人

#class  的创建

"""
class 类名:
    " 数据属性"
    "def 函数属性"
"""
# 注意:类和对象均用点来访问自己的属性

# class Chinese:
#     dang="蛋蛋蛋"
#     def wugong(self):
#         print("使出降龙十八掌")
# print(Chinese.__dict__)                      #把Chinese 类 全部属性拿到封装到字典
# print(Chinese.__dict__["dang"])                #通过key执行方法
# Chinese.__dict__["wugong"](1)
# {‘__weakref__‘: <attribute ‘__weakref__‘ of ‘Chinese‘ objects>, ‘dang‘: ‘蛋蛋蛋‘, ‘wugong‘: <function Chinese.wugong at 0x0000007DD1850268>, ‘__module__‘: ‘__main__‘, ‘__dict__‘: <attribute ‘__dict__‘ of ‘Chinese‘ objects>, ‘__doc__‘: None}
#
# 使出降龙十八掌
# print(dir(Chinese))
#
# class chinese:
#     "我是个热爱祖国"
#     country="China"
#     def __init__(self,name,sex,age):
#         self.mingzi=name
#         self.sex=sex
#         self.age=age
#     def gongfu(self):
#         print("%s使出降龙十八掌"%self.mingzi)
#     def zhaoji(self):
#         print("%s啪啪啪了一个妹子"%self.mingzi)
#
#
# d1=chinese("chenglonog","men",22)         #相当于执行类chinese下的__init__
# print(d1)                                    #<__main__.chinese object at 0x0000008758E03240>
# print(d1.__dict__)                           #  d1的{‘age‘: 22, ‘sex‘: ‘men‘, ‘mingzi‘: ‘chenglonog‘}
# d1.gongfu()                                  #先d1找gongfu  找不到 去chinese 中找
# chenglonog使出降龙十八掌

# 2.类的属性
# 查看类属性
# print(chinese.country)   #China
# 修改类的属性
# chinese.country="Japan"
# print(chinese.country)   #Japan
#删除类的属性
# del chinese.country
# print(chinese.country)     #AttributeError: type object ‘chinese‘ has no attribute ‘countr
#增加
# chinese.yangjing="黑色"
# print(chinese.yangjing)       #黑色

#函数属性                  |||||函数的增删改查和数据类型相通
# 查看函数属性
# print(chinese.gongfu.__dict__)

#增加函数属性
# def say_word(self,word):
#     print("%s讲%s"%(self.mingzi,word))
# chinese.say_word=say_word       #创建属性函数sya_word   |||必须在顶头先定义函数  否自不能创建
# d1.say_word("鸟语")         #chenglonog讲鸟语
#修改函数属性
# chinese.zhaoji=zhaole    错误 #NameError: name ‘zhaole‘ is not defined
# def zhao(self):
#     print("%s啪啪啪了一个妹子"%self.mingzi)
# chinese.zhaoji=zhao
# print(chinese.__dict__)

#修改实例属性    ||||只能增加数据属性  也能增加函数属性,但是调用不会给传入值self 不建议增加函数属性
# class chinese:
#     "我是个热爱祖国"
#     country="China"
#     def __init__(self,name,sex,age):
#         self.mingzi=name
#         self.sex=sex
#         self.age=age
#     def gongfu(self):
#         print("%s使出降龙十八掌"%self.mingzi)
#     def zhaoji(self):
#         print("%s啪啪啪了一个妹子"%self.mingzi)
#
#
# d1=chinese("chenglonog","men",22)         #相当于执行类chinese下的__init__
# 查看
# print(d1.__dict__)                     #{‘mingzi‘: ‘chenglonog‘, ‘sex‘: ‘men‘, ‘age‘: 22}
#
# 增加
# d1.yanjing="褐色"
# print(d1.yanjing)        #褐色
# 修改
# d1.yanjing="蓝色"
# print(d1.yanjing)         #蓝色
# 删除
# del d1.age
# print(d1.__dict__)       #{‘yanjing‘: ‘蓝色‘, ‘mingzi‘: ‘chenglonog‘, ‘sex‘: ‘men‘}

# 类的作用域
# 1.#定义一个类,只当一个作用域去用
# class Mydata:
#     pass
# x=10
# y=12
# Mydata.x=18
# Mydata.y=22
# print(x,y)                                 #10 12
# print(Mydata.x,Mydata.y)                    #18 22
# country="China"
# class Chinese:
#     country="中国"
#     globals()                    #声明全局变量
#     country="日本"                #如果输出变量的话为   日本
#     def __init__(self,name):
    #     self.name=name
    #     print(country)     #-------》就是个普通的变量
# d1=Chinese("成龙")       #不加globals----》China      |不是通过类去查找  直接去找类外面的变量
# print(d1.country)          #   中国
# print(d1.__dict__)          # print(d1.__dict__)

class Mydata:
    country="zhongguo"
    l=[]
    def __init__(self,name):
       self.xingming=name
    def print1(self):
        print("劳拉")

d1=Mydata("lao")
d1.l=[1]                       #{‘l‘: [1], ‘xingming‘: ‘lao‘}  在d1属性字典中穿件
d1.l.append(4)               #d1字典中有l[]  就在l 中追加没有的话  就会追加都Mydata 数据属性l[] 中
print(d1.__dict__)

------------------------------------------------------------------------------------------------------------------------补充:
class a:    def b(self):        print("xxx")    @staticmethod           #静态方法 下面函数通过  a.c()可调用  参数可有可无    def c():        print("oooo")    @classmethod             #类方法 也可通过类调用      def d(sb):        print(sb)        print("xoxoxo")
    @property              #属性    def q(self):        print("ooooxxxx")        return 1

# a.c()                      #oooo# a.d()                      #<class ‘__main__.a‘>          xoxoxo

f=a()#加上函数装饰器@property后# print(f.q())         #会报错 TypeError: ‘NoneType‘ object is not callableprint(f.q)>>>>>ooooxxxx>>>>>1
				
时间: 2024-10-31 11:35:46

Python修炼10------面向对象的相关文章

Day6 - Python基础6 面向对象编程

Python之路,Day6 - 面向对象学习 本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战>的游戏,你就思考呀,人狗作战,那至少需要2个角色,一个是人, 一个是狗,且人和狗都有不同的技能,比如人拿棍打狗, 狗可以咬人,怎么描述这种不同的角色和他们的功能呢? 你搜罗了自己掌握的所有技能,写出了下面的代码来描述这两个角色 1 2 3 4 5 6 7 8 9 10 11

python 高级之面向对象初级

python 高级之面向对象初级 本节内容 类的创建 类的构造方法 面向对象之封装 面向对象之继承 面向对象之多态 面向对象之成员 property 1.类的创建 面向对象:对函数进行分类和封装,让开发“更快更好更强...” 在python2.7中有两种类,一种是经典类,一种是新式类.2.7中经典类和新式类区别在于类的定义的时候在类名后面加上(object)的是新式类,否则就是经典类.经典类和新式类在继承上面有区别,之后在继承的时候会提及.但是在python3.5中,已经不区分新式类和经典类了.

python异常处理和面向对象编程总结

异常处理和面向对象编程,是python编程中,比较重要的基础.在实际生产编程设计和开发中,异常处理和面向读象都是必须在设计和开发过程中充分考虑的.    对于python开发和面向对象这两部分基础,用一个python程序进行封装说明,结果如下: #!/usr/bin/env python # _*_ coding:utf-8 _*_ ################# #异常处理 ################# print ''' 异常处理是用于处理软件或信息系统中出现的异常状况的一种机制,

Python:笔记(3)——面向对象编程

Python:笔记(3)--面向对象编程 类型与对象 术语 程序中存储的所有数据都是对象.每个对象都有一个身份.一个类别和一个值. 如:a=42,就是用值42创建了一个整数对象. 大多数对象都拥有大量特点的属性和方法. 属性就是与对象相关的值. 方法就是被调用时将在对象上执行某些操作的函数. 使用 . 运算符可以访问属性和方法. Python中对象的一些说明 检查对象类型最佳的方式是利用内置函数 isinstance(object,type) 所有对象都有引用计数,当一个对象的引用计数归零时,他

python学习之面向对象高级特性

类属性与实例属性类属性就是类对象所拥有的属性,它被所有类对象的实例对象所共有,在内存中只存在一个副本.在前面的例子中我们接触到的就是实例属性(对象属性),它不被所有类对象的实例对象所共有,在内存中的副本个数取决于对象个数. 05_类属性鱼实例属性.py import random class Turtle(object): # power是类属性. power = 100 def __init__(self): # x,y:实例属性. self.x = random.randint(0, 10)

22.python中的面向对象和类的基本语法

当我发现要写python的面向对象的时候,我是踌躇满面,坐立不安呀.我一直在想:这个坑应该怎么爬?因为python中关于面向对象的内容很多,如果要讲透,最好是用面向对象的思想重新学一遍前面的内容.这个坑是如此之大,犹豫再三,还是只捡一下重要的内容来讲吧,不足的内容只能靠大家自己去补充了. 惯例声明一下,我使用的版本是 python2.7,版本之间可能存在差异. 好,在开讲之前,我们先思考一个问题,看代码: 为什么我只创建是为 a 赋值,就可以使用一些我没写过的方法? 可能会有小伙伴说:因为 a

快速入门:十分钟学会PythonTutorial - Learn Python in 10 minutes

This tutorial is available as a short ebook. The e-book features extra content from follow-up posts on various Python best practices, all in a convenient, self-contained format. All future updates are free for people who purchase it. Preliminary fluf

python 求10亿以内和987654互质正整数的和

加群看见的 但是计算好慢,谁有更优的算法,麻烦说一下. ? 1 2 3 4 5 6 7 8 9 10 factor=[] for x in xrange(1, 987654//2+1):     if 987654%x==0:         factor.append(x) sum=0 for y in xrange(1, 1000000000):     for z in factor:         if y%z == 0:             sum+=y print sum 51

Python基础09 面向对象的进一步拓展

Python基础09 面向对象的进一步拓展 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们熟悉了对象和类的基本概念.我们将进一步拓展,以便能实际运用对象和类. 调用类的其它信息 上一讲中提到,在定义方法时,必须有self这一参数.这个参数表示某个对象.对象拥有类的所有性质,那么我们可以通过self,调用类属性. class Human(object): laugh = 'hahahaha' def show_laugh(

转 python语法学习面向对象之继承

传送门 python语法学习面向对象之继承 只要涉及到面向对象,”类“是必须出现的一个代名词. 类和对象是面向对象编程的两个主要方面.类创建一个新类型,而对象是这个类的实例. 类的一些概念: 包括初始化方法__init__,可以理解为构造,self,理解为this,等等在前一篇文章中介绍过,现在就学习类的继承. 继承: 面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制.继承完全可以理解成类之间的类型和子类型关系. 需要注意的地方:继承语法   class 派生类