类的成员和嵌套(建模)
一. 类的成员共分为三类: 字段, 方法, 属性
class Foo:country = '中国' # 静态字段def __init__(self, name):self.name = name # 普通字段def func(self): # 普通方法, 至少有一个self参数pass@staticmethod # 静态方法, 无默认参数def func2():pass@classmethod # 类方法, 至少有一个cls参数def func3(cls):pass@property # 属性def func4(self):pass
一. 字段: 静态字段, 普通字段
通过类创建对象时,如果每个对象都具有相同的字段,那么就使用静态字段
静态字段访问方法
静态字段属于类, 静态字段通过类访问, 静态字段在内存中只保存一份
print(Foo.country)
普通字段访问方法
普通字段属于对象, 普通字段需要通过对象来访问, 普通字段在每个对象中都要保存一份
obj = Foo('123')
print(obj.name)
二. 方法: 普通方法, 静态方法, 类方法
三种方法在内存中都归属于类, 区别在于调用方式不同
普通方法: 由对象调用, 至少一个self参数, 执行普通方法时, 自动将调用该方法的对象赋值给self
obj = Foo('1232')
obj.func()
静态方法: 由类调用, 无默认参数
Foo.func3()
类方法: 由类调用, 至少一个cls参数, 执行类方法时, 自动将调用该方法的类复制给cls
Foo.func2()
相同点: 对于所有的方法而言, 均属于类(非对象)中, 所以, 在内存中也只保存一份
不同点: 方法调用者不同, 调用方法时自动传入的参数不同
三. 属性
定义时, 在普通方法的基础上添加 @property 装饰器, 属性仅有一个self参数
调用时, 无需括号, 这样节省时间
对于简单的方法, 当无需传参且有返回值时, 可以使用 @property
obj = Foo('1232')
obj.func4
四, 字段, 方法, 属性都有私有和公有, 需要在前面加上__, 例如def __func(): pass __country = 'China'
私有字段, 方法, 属性在调用时, 一般情况下都无法访问, 需要在类中访问
在继承时, 子类无法查看父类的私有字段, 方法, 属性
对于简单的方法, 当无需传参且有返回值时, 可以使用 @ property
五. 嵌套
class People(object):def __init__(self, name, address):self.name = nameself.address = addressdef play(self):print('玩')obj1 = People('企稳', '1000000')
obj2 = People('戊二醛', '1010000')class Province(object):def __init__(self, name, location):self.name = nameself.location = locationself.people= Nonep1 = Province('江苏', 'china')
p2 = Province('北京', 'china')p1.people = obj1
p2.people = obj2print(p1.people.name)
print(p1.people.address)
print(p1.name)
print(p1.location)
p1.people.play()
转载于:https://www.cnblogs.com/NachoLau/p/9550576.html
类的成员和嵌套(建模)相关推荐
- 模板类中使用友元函数的方式,派生类友元函数对基类的成员使用情况
在一般友元函数的前面加上 template<typename T),注意在函数的声明和定义处都要加这个模板 例如: //模板类,长方体类 template <typename Elemen ...
- JavaSE基础知识(5)—面向对象(5.2类的成员)
一.属性 1.语法 数据类型 属性名 [= 属性值]; 2.特点 ①属性的数据类型可以为任意类型,包含基本类型或引用类型 ②属性可以不用手动赋值,有默认值 int--0 double--0.0 cha ...
- Java性能优化(12):最小化类和成员可访问能力
类和接口是Java程序设计语言的核心,它们也是Java语言的基本抽象单元.Java语言提供了许多强大的基本元素,供程序猿来设计类和接口. 要想区别一个设计良好的模块与一个设计不好的模块,最重要的因素是 ...
- Effective Java之使类和成员的可访问性最小化(十三)
对于类 对于类,只有public和package-private两种访问级别. 1.对于顶层的类来说,只有包级私有和公有两种可能,区别是包级私有意味着只能在当前包中使用,不会成为导出api的一部分,而 ...
- 内部类可以引用它的包含类的成员吗?有没有什么限制?
最近看到一道面试题:内部类可以引用它的包含类的成员吗?有没有什么限制? 答案大部分都是这样子的: 完全可以.如果不是静态内部类,那没有什么限制! 一个内部类对象可以访问创建它的外部类对象的成员包括私 ...
- java 嵌套类implement_有关 C++ 嵌套类
嵌套类的访问问题: 记得白凤煮的C++中有一句这样的话:C++嵌套类只是语法上的嵌套.然而在实践过程中,却并非如此. Ex: classA { public: staticinta; classA1 ...
- python类中包含一个特殊的变量、它可以访问类的成员_区域联防的运用中遵循并贯彻以球为主的防守原则,做到球人区三者兼顾。( )...
刘墉书法的特点是用墨厚重,体丰骨劲,浑厚敦实,别具面目.A:对B:错 Python类中包含一个特殊的变量(),它表示当前对象自身,可以访问类的成员.A:meB:selfC:thisD:与类同名 在过火 ...
- 第13条 类与接口——使类和成员的可访问性最小化
要区别设计良好的模块与设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和其他实现细节.正确使用修饰符对于实现信息隐藏是非常关键的. 第一规则很简单:尽可能地使每个类 ...
- 继承规则及派生类的成员函数
继承是面向对象复用的重要手段.通过继承定义一个类,继承是类型之间的关系建模,共享共有的东西,实现各自本质不同的东西. 成员访问限定符&继承关系: 这是一个简单的继承关系: #include&l ...
最新文章
- Tomcat异常退出
- git 你get了吗(git命令日常使用)
- 不同编程语言在发生stackoverflow之前支持的调用栈最大嵌套层数
- MIPS介绍与MIPS汇编的常用指令
- yii2 请求外部api_微服务架构之「 API网关 」
- Hibernate如何一个类映射两个表
- [github] - git使用小结(分支拉取、版本回退)
- C#如何控制Windows关机
- 非合作博弈篇——混合策略博弈(mixed strategy)
- 四种JAVA架构演进史,程序员能学会最后一种就非常厉害了,至少50k
- 关于智能码控门禁系统项目的二维码验证问题
- r76800h怎么样r7 6800h参数
- 关于Windows Server 2012 网络发现启动不了
- 河工计院ACM2022寒假培训题单以及超详细题解
- TFT显示模组有什么功能
- bmp、jpg转换为icon图像
- 天宇优配|沪指冲高回落跌0.35%,地产、医药等板块走强,供销社概念再创新高
- 单点登录服务Authelia(上篇)
- 数据挖掘建模的标准流程是什么,主要分为哪几步?
- mongodb的id查询