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 ...
随机推荐
- 电商物流仓储WMS业务流程
电商物流仓储WMS业务流程 SKU是什么意思? 一文详解电商仓储管理中SKU的含义 从货品角度看,SKU是指单独一种商品,其货品属性已经被确定.只要货品属性有所不同,那么就是不同的SKU. PO信息 ...
- java RPC系列之二 HTTPINVOKER
java RPC系列之二 HTTPINVOKER 一.java RPC简单的汇总 java的RPC得到技术,基本包含以下几个,分别是:RMI(远程方法调用) .Caucho的Hessian 和 Bu ...
- vc++如何创建程序--利用快捷键进行多行注释
Eclipse同时注释多行①:ctrl+/或 ②:ctrl+shift+/ : Visual studio先按ctrl+k 再按 ctrl+c 2.在VC++6.0中需要自己设置快捷键,设置方法链接如 ...
- 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
这是在复制代码的时候,没有修改路径,但是IDEA没有报错,还会爆出 WARN ework.web.servlet.PageNotFound - No mapping found for HTTP re ...
- 沃通SSL证书、代码签名证书应用于机器人安全防护
近两年,扫地机器人.智能音箱等消费级机器人产品逐渐走入大众生活的中.随着人工智能技术的迅猛发展,预计2023年全球消费级机器人市场规模将达到150亿美元.然而,产业的迅猛发展却伴随着安全防护的缺失,安 ...
- Python数据分析--------numpy数据打乱
一.shuffle函数: import numpy.random def shuffleData(data): np.random.shufflr(data) cols=data.shape[1] X ...
- C语言提高 (6) 第六天 文件(续) 链表的操作
1昨日回顾 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include &l ...
- sql修改字段值
update dfw_USER_ACCOUNTS set USER_INTEGRAL="20" where USER_INTEGRAL="17"
- Flex教程
详细教程: 1.基础知识:一劳永逸的搞定 flex 布局 2.阮一峰的flex教程:flex syntax flex example
- Project Euler 30 Digit fifth powers
题意:判断一个数 N 的每一位的5次方的和是否为其本身 ,求出所有满足条件的数的和 思路:首先设这个数 N 为 n 位,可以简单的判断一下这个问题的上界 10 ^ n <= 9 ^ 5 × n, ...