python面向对象与结构成员之间的关系
1面向对象结构分析:
----面向对象整体大致分为两块区域:
-------第一部分:静态字段(静态变量)部分
-------第二部分:方法部分
--每个区块可以分为多个小部分
class A:
country = "美国" # 静态变量(静态字段)
__cooage = 20 #私有静态变量(私有静态字段)
def __init__(self,name,age): #普通方法(构造方法)
self.name = name #对象属性(普通字段)
self.__age = age #私有对象属性(私有普通属性)
def func1(self): # 普通方法
pass
def __func(self): #私有方法
pass
@property
def age(self): #属性
pass
@classmethod #类方法
def class_func(cls):
# 定义类方法,至少有一个cls参数
pass
@staticmethod # 静态方法
def stact_func():
#定义静态方法,无默认参数
psaa
2面向对象的私有于公有
对于每一个类的成员而言都有两种形式:
-----共有成员,在任何地方都可以访问
-----私有成员,只有在自己类的内部才可以访问 ------私有成员和共有成员的访问限制不同: 静态字段(静态变量)
--共有静态字段:类可以访问,类内部可以访问,派生类不能访问
---私有静态字段:仅类的内部可以访问 普通字段(对象属性)
---共有普通字段:对象可以访问,类内部可以访问,派生类可以访问
---私有普通字段:仅类的内部可以访问 方法:
---共有方法:对象可以访问,类内部可以访问,派生类可以访问
--私有方法:仅类的内部可以访问 总结:
对于这些私有成员来说,它们只能在本类的内部使用,不能再本类的外部以及派生类中使用.
ps:如果要在外部访问,可以通过_类__属性 访问
为什么可以通过._类__私有成员名?因为类在创建时
如果遇到私有成员(私有静态字段和私有方法)时
它会将其保存在内存时自动在前面加上_类名 3.面向对象的成员
1)字段
字段包括:普通字段和静态字段,它们在定义和使用中有所区别,
最本质的区别就是内存中保存的位置不同.
普通字段属于实例化对象,
静态字段属于类 静态字段在内存中只保存一份
普通字段在每个对象中都要保存一份
应用场景:通过类创建对象时,如果每个对象都具有相同的字段,那么就是要静态字段
2)方法
方法包括:普通方法,静态方法和类方法,三种方法在内存在内存中都归属于类,区别在于调用方式不一同.
--普通方法:由对象调用:至少一个self参数;执行普通方法时,自动将调用改方法的对象赋值给self
--类方法:由类调用;至少一个cls参数;执行类方法时,自动将调用改方法的类复制给cls
--静态方法:有类调用;无默认参数 相同点:对于所有的方法而言,均属于类(非对象)中,所以在内存中也只保存一份>
不同点:方法调用者不同,调用方法时自动传入的参数不同 classmethod
----类方法:通过类名调用方法,类方法中第一个参数约定俗称cls,python自动将类传给cls
静态方法
对类中的静态变量进行改变,要用类方法
继承中,父类得到子类类的类空间
class A:
age =12
def func(self): #普通方法
print(self)
@classmethod
def func1(cls): # 类方法,自动添加cls 次方法无需对象参与
print(333)
cls.age = 30
print(cls.age) #对B类中的内容进行修改
class B(A):
age = 15
B.func1() # <class '__main__.B'>
print(B.func1())
print(B.__dict__) # 30 {'__module__': '__main__', 'age': 30, '__doc__': None} 对B类中的内容进行修改
不通过类方法,想让我的父类的某个方法得到子类的类空间里面的任意值
class A:
age = 18
def func2(self):
print(self) # self子类的对象,能得到子类空间的任何值
class B(A):
age = 22
b1 = B()
b1.func2()
print(b1.func2())
print(b1.__dict__)
@staticmethod
# 静态方法:
class A:
@staticmethod
def login(username,password):
if username == "alex" and password == 123:
print("登录成功")
else:
print("登录失败")
a = A()
a.login("alex",123) #登录成功 # 代码块,清晰
# 复用性.
python面向对象与结构成员之间的关系的更多相关文章
- python 面向对象类与类之间的关系
主要内容: 1. 依赖关系 2. 关联关系, 组合关系, 聚合关系 3. 继承关系 4. 类中的特殊成员 引子 大千世界, 万物之间皆有规则和规律,我们的类和对象是对大千世界中的所有事物进行归类. 那 ...
- Python面向对象05 /私有成员、类方法、静态方法、属性、isinstance/issubclass
Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubclass 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/is ...
- Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作
Python进阶----表与表之间的关系(一对一,一对多,多对多),增删改查操作,单表查询,多表查询 一丶表与表之间的关系 背景: 由于如果只使用一张表存储所有的数据,就会操作数 ...
- python与C结构体之间二进制数据转换
python与C结构体之间数据转换 前言 在实际应用中,可能会遇到直接和C进行二进制字节流协议通信,这时要把数据解包成python数据,如果可能,最好与C定义的结构体完全对应上. python中有2种 ...
- .NET世界各成员之间的关系
相信看到这篇文章的人,心中肯定有这样的想法:ODBC.OLEDB.ADO.ADO.NET貌似都是访问数据库的东东,那么他们之间有什么区别,又有什么联系呢?不要着急,待我慢慢道来. 先说ODBC,官方的 ...
- FFMPEG中最要害的结构体之间的关系
FFMPEG中最关键的结构体之间的关系 http://www.myexception.cn/program/1404591.html FFMPEG中结构体很多.最关键的结构体可以分成以下几类: a) ...
- python包管理工具他们之间的关系
python包管理工具之间的关系 现在的python包管理工具有很多,非常混乱,必须理清他们之间的关系才能更好的使用python构建强大的包关系系统工具. 首先:python官方推荐的第三方库是PyP ...
- python --- 18 类与类之间的关系, 特殊成员
类与类之间的关系 一.依赖关系 执行某个动作的时候. 需要xxx来帮助你完成这个操作 随时可以更换另外一个东西来完成此操作 此时的关系是最轻的. 二.关联关系(组合关系,聚合关系) 1.一对 ...
- python 面向对象和类成员和异常处理
python 面向对象 你把自己想象成一个上帝,你要创造一个星球,首先你要把它揉成一个个球,两个直径就能创造一个球 class star: '''名字(name),赤道直径(equatorial di ...
随机推荐
- 谷歌vimium配置
谷歌不得不说真的是一个非常好用的浏览器(之前用的浏览器真的好low),推荐一款非常极客的的插件vimium,让你使用彻底告别鼠标,瞬间感觉高大上... 默认配置: j: 向下细微滚动窗口. k:向上 ...
- css3 flex 详解,可以实现div内容水平垂直居中
先说一下flex一系列属性: 一.flex-direction: (元素排列方向) ※ flex-direction:row (横向从左到右排列==左对齐) ※ flex-direction:row- ...
- ACM_____不再爱你……
不再爱你…… 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 现在有一个圆柱形水杯,里面装满了水,在它的底部有一个小洞,通过一些简单的物理知识我们可以知道: 1.由于重力 ...
- PhotoZoom控制面板简介说明
PhotoZoom是一款极其简单的图片无损放大工具,简单几步渲染出完美的放大照片,呈现无与伦比的画质效果.即可虽然简单,菜单和面板的功能很少,但却是设计师的必备神器,因为其简单易用性,它的软件菜单命令 ...
- 一个单元格占两行三列的HTML代码为
主要是这两个属性: colspan 单元格占多少列 rowspan 单元格占多少行 <table width="200" border="1">&l ...
- 基于 SpringMVC——web.xml基本配置
<!--声明应用范围内的初始化参数--> <context-param> <param-name>contextConfigLocation</param-n ...
- DNS解析流程原理(图例)
13台根服务器的dns: 1.root-servers.net198.41.0.4美国2.root-servers.net192.228.79.201美国(另支持IPv6)3.root-servers ...
- --without-v4l ,make clean, 重新make即可。
--without-v4l ,make clean, 重新make 2011-02-27 17:38 Error: X11 support required for GUI compilation
- NOIP2018提高组省一冲奖班模测训练(五)
NOIP2018提高组省一冲奖班模测训练(五) http://www.51nod.com/Contest/ContestDescription.html#!#contestId=79 今天有点浪…… ...
- 邓_ Php·面试
1:PHP的意思,它能干什么? PHP是一个基于服务端来创建动态网站的脚本语言,您可以用PHP和HTML生成网站主页,英文的全称(Professional Home Pages)1.Web ...