Python之路——初识面向对象

类的声明

1 def functionName(args):
2      ‘函数文档字符串‘
3       函数体 
1 class Person:   #定义一个人类
2     role = ‘person‘  #人的角色属性都是人
3     def walk(self):  #人都可以走路,也就是有一个走路方法,也叫动态属性
4         print("person is walking...")

类的作用

  属性引用

  实例化:类名加括号就是实例化,会自动触发__init__函数的运行,

      可以用它来为每个实例定制自己的特征

 1 class Person:   #定义一个人类
 2     role = ‘person‘  #人的角色属性都是人
 3     def __init__(self,name):
 4         self.name = name  # 每一个角色都有自己的昵称;
 5
 6     def walk(self):  #人都可以走路,也就是有一个走路方法
 7         print("person is walking...")
 8
 9
10 print(Person.role)  #查看人的role属性
11 print(Person.walk)  #引用人的走路方法,注意,这里不是在调用

关于self

self: 在实例化时自动将对象/实例本身传给__init__的第一个参数,你也可以给他起个别的名字,

  但是一般不要这么做。

类属性

一:我们定义的类的属性到底存到哪里了?有两种方式查看

dir(类名):查出的是一个名字列表

类名.__dict__:查出的是一个字典,key为属性名,value为属性值

二:特殊的类属性

类名.__name__# 类的名字(字符串)

类名.__doc__# 类的文档字符串

类名.__base__# 类的第一个父类(在讲继承时会讲)

类名.__bases__# 类所有父类构成的元组(在讲继承时会讲)

类名.__dict__# 类的字典属性

类名.__module__# 类定义所在的模块

类名.__class__# 实例对应的类(仅新式类中)

类命名空间与对象、实例的命名空间

创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性

而类有两种属性:静态属性和动态属性

  • 静态属性就是直接在类中定义的变量
  • 动态属性就是定义在类中的方法
其中类的数据属性是共享给所有对象的
而类的动态属性是绑定到所有对象的

面向对象的组合

软件重用的重要方式除了继承之外还有另外一种方式,即:组合

组合指的是,在一个类中以另外一个类的对象作为数据属性,称为类的组合

 1 class Weapon:
 2     def prick(self, obj):  # 这是该装备的主动技能,扎死对方
 3         obj.life_value -= 500  # 假设攻击力是500
 4
 5 class Person:  # 定义一个人类
 6     role = ‘person‘  # 人的角色属性都是人
 7
 8     def __init__(self, name):
 9         self.name = name  # 每一个角色都有自己的昵称;
10         self.weapon = Weapon()  # 给角色绑定一个武器;
11
12 egg = Person(‘egon‘)
13 egg.weapon.prick()
14 #egg组合了一个武器的对象,可以直接egg.weapon来使用组合类中的所有方法

当类之间有显著不同,并且较小的类是较大的类所需要的组件时,用组合比较好

 

原文地址:https://www.cnblogs.com/liuyankui163/p/8327685.html

时间: 2024-11-09 09:40:02

Python之路——初识面向对象的相关文章

8、python全栈之路-初识面向对象

八.初识面向对象 http://www.cnblogs.com/Eva-J/articles/7293890.html#_label1 1.楔子 #面向对象编程 #面向对象的思想 #对象就是一个实实在在的,可以准确描述出来的实体,比如说egg,alex #面向对象的编程是一种上帝视角的切换 #之前你使用的面向过程的编程是面向结果去编程,一个流水线下来有固定的结果 #好想  可扩展性差 容易引起代码的安全问题 #面向对象 #类:具有相同属性和方法的一类事物 #对象:具有具体的属性的事物 2.初识类

Python之路-初识python及环境搭建并测试

一.认识Python 起源 Python的作者是著名的"龟叔"Guido van Rossum,他希望有一种语言,这种语言能够像C语言那样,能够全面调用计算机的功能接口,又可以像shell那样,可以轻松的编程.龟叔从ABC语言看到希望,ABC语言是由荷兰的数学和计算机研究所开发的.龟叔也参与到ABC语言的开发.由于一系列原因ABC并没有快速传播使用.因此,龟叔开始写Python语言. 诞生 1989年,龟叔为了打发无聊的圣诞节,开始编写Python语言.1991年,第一个Python编

Python之路:面向对象及相关

其他相关 一.isinstance(obj, cls) 检查是否obj是否是类 cls 的对象 1 class Foo(object): 2     pass 3   4 obj = Foo() 5   6 isinstance(obj, Foo) 二.issubclass(sub, super) 检查sub类是否是 super 类的派生类 1 class Foo(object): 2     pass 3   4 class Bar(Foo): 5     pass 6   7 issubcl

python 之路8 面向对象2

一. 面向对象三大特性: 多态 多种类型 参数可以是python的任意一种类型 def func(arg) print(arg) obj = func(int) obj = func(str) obj = func(dict) 封装 继承 二.面向对象中 成员 字段 class Foo: #字段(静态字段) 存放在类里面 静态字段减少内存使用,多个对象公用一份 CC = 123 def _init__(self): #name字段 为普通字段 存放在对象里面 self.name = 'wyx'

Python之路,Day6 - 面向对象学习

面向过程 VS 面向对象 编程范式 编程是 程序 员 用特定的语法+数据结构+算法组成的代码来告诉计算机如何执行任务的过程 , 一个程序是程序员为了得到一个任务结果而编写的一组指令的集合,正所谓条条大路通罗马,实现一个任务的方式有很多种不同的方式, 对这些不同的编程方式的特点进行归纳总结得出来的编程方式类别,即为编程范式. 不同的编程范式本质上代表对各种类型的任务采取的不同的解决问题的思路, 大多数语言只支持一种编程范式,当然也有些语言可以同时支持多种编程范式. 两种最重要的编程范式分别是面向过

python之路——初识socket

一.socket模块的常用方法: 1.AF_UNIX:一台机器直接的通信 2.AF_INET:基于网络的通信 3.socket.socket():获取套接对象 4.listen:监听链接数量 5.accept:等待客户端链接 6.connect:链接服务端 7.socket.SOCK_DGRAM:数据流 8.socket.SOCK_STREAM:tcp协议,也是一个数据流 9.send:发送消息 10.recv:接收消息 11.decode:解码 12.encode:编码 13.SO_REUSE

Python之路—初识Python

Python简介 Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOBE排行榜,Python赶超PHP占据第五!!! 由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!!! Python可以应用于众多领域,如:数据分析.组件集成.网络服务.图像处理.数值计算和科学计算等众

python之路——初识函数

为什么要用函数 现在python届发生了一个大事件,len方法突然不能直接用了... 让你计算'hello world'的长度,你怎么计算? 这个需求对于现在的你其实不难,我们一起来写一下. s1 = "hello world" length = 0 for i in s1: length = length+1 print(length) 好了,功能实现了,非常完美.然后现在又有了一个需求,要计算另外一个字符串的长度,"hello eva". 于是,这个时候你的代码

python之路--17. 面向对象 -成员

三十六.面向对象的成员 能写的所有成员 一.变量 1.实例变量    访问时      对象.变量 2.类变量         访问时     类名.变量 注意: 二.方法 1.实例方法 必须有一个参数(self) 调用时      对象.变量() 2.类方法 必须有一个参数(cls) 定义时在方法前加        @classmethod 调用时       类名.变量() 3.静态方法(属于类) 可以不用参数 定义时 在方法前加       @staticmethod 调用时