一. 类的成员共分为三类: 字段, 方法, 属性

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

类的成员和嵌套(建模)相关推荐

  1. 模板类中使用友元函数的方式,派生类友元函数对基类的成员使用情况

    在一般友元函数的前面加上 template<typename T),注意在函数的声明和定义处都要加这个模板 例如: //模板类,长方体类 template <typename Elemen ...

  2. JavaSE基础知识(5)—面向对象(5.2类的成员)

    一.属性 1.语法 数据类型 属性名 [= 属性值]; 2.特点 ①属性的数据类型可以为任意类型,包含基本类型或引用类型 ②属性可以不用手动赋值,有默认值 int--0 double--0.0 cha ...

  3. Java性能优化(12):最小化类和成员可访问能力

    类和接口是Java程序设计语言的核心,它们也是Java语言的基本抽象单元.Java语言提供了许多强大的基本元素,供程序猿来设计类和接口. 要想区别一个设计良好的模块与一个设计不好的模块,最重要的因素是 ...

  4. Effective Java之使类和成员的可访问性最小化(十三)

    对于类 对于类,只有public和package-private两种访问级别. 1.对于顶层的类来说,只有包级私有和公有两种可能,区别是包级私有意味着只能在当前包中使用,不会成为导出api的一部分,而 ...

  5. 内部类可以引用它的包含类的成员吗?有没有什么限制?

    最近看到一道面试题:内部类可以引用它的包含类的成员吗?有没有什么限制? 答案大部分都是这样子的:  完全可以.如果不是静态内部类,那没有什么限制! 一个内部类对象可以访问创建它的外部类对象的成员包括私 ...

  6. java 嵌套类implement_有关 C++ 嵌套类

    嵌套类的访问问题: 记得白凤煮的C++中有一句这样的话:C++嵌套类只是语法上的嵌套.然而在实践过程中,却并非如此. Ex: classA { public: staticinta; classA1 ...

  7. python类中包含一个特殊的变量、它可以访问类的成员_区域联防的运用中遵循并贯彻以球为主的防守原则,做到球人区三者兼顾。( )...

    刘墉书法的特点是用墨厚重,体丰骨劲,浑厚敦实,别具面目.A:对B:错 Python类中包含一个特殊的变量(),它表示当前对象自身,可以访问类的成员.A:meB:selfC:thisD:与类同名 在过火 ...

  8. 第13条 类与接口——使类和成员的可访问性最小化

    要区别设计良好的模块与设计不好的模块,最重要的因素在于,这个模块对于外部的其他模块而言,是否隐藏其内部数据和其他实现细节.正确使用修饰符对于实现信息隐藏是非常关键的. 第一规则很简单:尽可能地使每个类 ...

  9. 继承规则及派生类的成员函数

    继承是面向对象复用的重要手段.通过继承定义一个类,继承是类型之间的关系建模,共享共有的东西,实现各自本质不同的东西. 成员访问限定符&继承关系: 这是一个简单的继承关系: #include&l ...

最新文章

  1. Tomcat异常退出
  2. git 你get了吗(git命令日常使用)
  3. 不同编程语言在发生stackoverflow之前支持的调用栈最大嵌套层数
  4. MIPS介绍与MIPS汇编的常用指令
  5. yii2 请求外部api_微服务架构之「 API网关 」
  6. Hibernate如何一个类映射两个表
  7. [github] - git使用小结(分支拉取、版本回退)
  8. C#如何控制Windows关机
  9. 非合作博弈篇——混合策略博弈(mixed strategy)
  10. 四种JAVA架构演进史,程序员能学会最后一种就非常厉害了,至少50k
  11. 关于智能码控门禁系统项目的二维码验证问题
  12. r76800h怎么样r7 6800h参数
  13. 关于Windows Server 2012 网络发现启动不了
  14. 河工计院ACM2022寒假培训题单以及超详细题解
  15. TFT显示模组有什么功能
  16. bmp、jpg转换为icon图像
  17. 天宇优配|沪指冲高回落跌0.35%,地产、医药等板块走强,供销社概念再创新高
  18. 单点登录服务Authelia(上篇)
  19. 数据挖掘建模的标准流程是什么,主要分为哪几步?
  20. mongodb的id查询

热门文章

  1. 14岁初中生3天制成勒索病毒 制作方法或自学而成
  2. head tail mkdir cp
  3. UITableView的cell向左滑出有删除,修改等选项
  4. 2015 NOIP day2 t2 信息传递 tarjan
  5. Lync 小技巧-24-PDF 加密文件-转-Word-操作手册
  6. Vue 学习笔记 (一) -- 初识 VueCli 3
  7. 由《惊天魔盗团》改编的VR游戏登陆Gear VR
  8. git-svn:通过git来管理svn代码
  9. logrotate 不轮询
  10. nginx 启动/停止/重启 BAT