1、类的成员? 变量、方法、属性

 class Foo:

     # 方法
def __init__(self,name):
# 实例变量/字段
self.name = name # 方法
def func(self):
pass # obj,Foo类的对象
# obj,Foo类的实例
obj = Foo('朱奎峰')

  变量:1、实例变量(字段)

        2、类变量(静态字段)

 实例一:
class Foo:
# 类变量(静态字段)
country = "中国" def __init__(self,name):
# 实例变量(字段)
self.name = name def func(self):
pass obj1 = Foo('季红')
obj2 = Foo('王晓东') Foo.country 思考题: 如何验证儿子都不知道私有字段的存在. 无法访问:
class Base(object):
__secret = "受贿" class Foo(Base): def func(self):
print(self.__secret)
print(Foo.__secret) obj = Foo()
obj.func() 可以访问:
class Base(object):
__secret = "受贿" def zt(self):
print(Base.__secret) class Foo(Base): def func(self):
print(self.__secret)
print(Foo.__secret) obj = Foo()
obj.zt()

实例

  方法:1、实例方法

       2、静态方法

       3、类方法    @classmethod

 - 实例方法
class Foo(object):
def __init__(self, name):
self.name = name # 实例方法
def func(self):
print(self.name) obj = Foo('..')
obj.func() - 静态方法
class Foo(object):
def __init__(self, name):
self.name = name # 静态方法,如果方法无需使用对象中封装的值,那么就可以使用静态方法
@staticmethod
def display(a1,a2):
return a1 + a2
Foo.display(1,3) - 类方法
class Foo(object): # 类方法,cls是类
@classmethod
def show(cls,x1,x2):
print(cls,x1,x2) # 执行类方法
Foo.show(1,8) 面试题: 静态方法/类方法和实例方法的区别? 属性(通过方法改造出来):
示例:
class Foo(object):
def __init__(self):
pass @property
def start(self):
return 1 @property
def end(self):
return 10 obj = Foo()
print(obj.start)
print(obj.end)
"""
# 总结:
# 1. 编写时
# - 方法上方写 @property
# - 方法参数:只有一个self
# 2. 调用时:无需加括号 对象.方法
# 3. 应用场景: 对于简单的方法,当无需传参且有返回值时,可以使用 @property
"""
@staticmethod  静态方法 ,如果方法无需使用对象中封装的值,那么就可以使用静态方法@staticmethod,放在定义的函数前面
def display(a1,a2):   

  

  属性: 通过方法改造出来

 class Foo(object):
def __init__(self):
pass @property
def start(self):
return 1 @property
def end(self):
return 10 obj = Foo()
print(obj.start)
print(obj.end)
"""
# 总结:
# 1. 编写时
# - 方法上方写 @property
# - 方法参数:只有一个self
# 2. 调用时:无需加括号 对象.方法
# 3. 应用场景: 对于简单的方法,当无需传参且有返回值时,可以使用 @property
"""

2、静态方法、类方法和实例方法的区别?

  定义 静态方法、类方法定义的时候需要添加@   ,实例方法不需要添加
  执行 静态方法、类方法执行时通过类. 可以直接调用,  实例方法 先实例化,然后通过对象. 调用
  应用场景?
    如果在方法内部不会用到对象相关的数据时,就可以用静态 和类
    如果需要用到对象 用实例方法
    如果在代码中会用到当前类,为了省事可以用类方法

3、属性:

属性总结

嵌套

 面向对象:
"""
创建三个学校且三个学校的设施内容等都是一致.
""" class School(object):
def __init__(self, name, address):
self.name = name
self.address = address def speech(self):
print('讲课') obj1 = School('老男孩北京校区', '美丽富饶的沙河')
obj2 = School('老男孩上海校区', '浦东新区')
obj3 = School('老男孩深圳校区', '南山区')
class Teacher(object):
def __init__(self, name, age, salary):
self.name = name
self.age = age
self.__salary = salary
self.school = None t1 = Teacher('李杰', 19, 188888)
t2 = Teacher('艳涛', 18, 60)
t3 = Teacher('女神',16, 900000)
# ############## 老师分配校区
t1.school = obj1
t2.school = obj1
t3.school = obj2
# ####################################
# 查看t1老师,所在的校区名称/地址
print(t1.school.name)
print(t1.school.address)
print(t1.name)
print(t1.age)
t1.school.speech() 准则: 字段和方法的归类. 以前:
[
{"name":'alex1','age':18,xxx:999},
{"name":'alex2',age':18},
]

day 23 面向对象中类的成员 和嵌套的更多相关文章

  1. 文成小盆友python-num8 面向对象中的成员,成员修饰符,特殊成员,异常处理,设计模式之单例模式

    本节主要内容: 1.面向对象中的成员 2.成员修饰符 3.特殊成员 4.异常处理 5.设计模式之单例模式 一.面向对象中的成员(类的成员) 类的成员总共可以分为3大类,每类中有不同的分支. 1.总述, ...

  2. JAVA之旅(四)——面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块

    JAVA之旅(四)--面向对象思想,成员/局部变量,匿名对象,封装 , private,构造方法,构造代码块 加油吧,节奏得快点了 1.概述 上篇幅也是讲了这点,这篇幅就着重的讲一下思想和案例 就拿买 ...

  3. python全栈开发 * 23 面向对象 知识点汇总 * 180704

    23 面向对象 -----特殊方法 1. isinstance(obj,类名) 判断对象是否是此类实例化或者此类的子类实例化出来的class A:passclass B(A):passb1=B()pr ...

  4. C#中类的成员

    一.C#中类的成员 1. 类的成员 类中的数据和函数都称为类的成员.类的成员可以分为两类: ?类本身所声明的. ?从基类中继承来的. 如果在类声明中没有指定基类,则该类将继承System.Object ...

  5. Java面向对象——类的成员

    Java面向对象——类的成员 摘要:本文主要介绍了类的常见成员. 属性 属性称为成员变量,一般来讲不用赋值,因为有默认值,另外显式赋值没有意义会导致所有由此类创建对象都是此值. 默认值 Boolean ...

  6. Java基础语法(9)-面向对象之类的成员

    title: Java基础语法(9)-面向对象之类的成员 blog: CSDN data: Java学习路线及视频 1.面向对象特征--封装 为什么需要封装?封装的作用和含义? 我要用洗衣机,只需要按 ...

  7. Python面向对象05 /私有成员、类方法、静态方法、属性、isinstance/issubclass

    Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/issubclass 目录 Python面向对象05 /私有成员.类方法.静态方法.属性.isinstance/is ...

  8. C# 中类的成员有哪些?

    类(class)是C#类型中最基础的类型.类是一个数据结构,将状态(字段)和行为(方法和其他函数成员)组合在一个单元中.类提供了用于动态创建类实例的定义,也就是对象(object).类支持继承(inh ...

  9. python 面向对象和类成员和异常处理

    python 面向对象 你把自己想象成一个上帝,你要创造一个星球,首先你要把它揉成一个个球,两个直径就能创造一个球 class star: '''名字(name),赤道直径(equatorial di ...

随机推荐

  1. dig-基本使用

    dig:Domain Information Groper,是一个DNS查询工具 1:使用google的域名服务器:查询特定域名的A记录 [root@localhost ~]# dig @8.8.8. ...

  2. ArangoDB数据导入

    目录 arangoimp方法 参数解析 实例展示 python方法 单条导入 批量导入 1.arangoimp方法 参数解析 全局配置部分(Global configuration) --backsl ...

  3. OC-音乐播放器-锁屏处理

    QQ音乐播放的过程中,锁屏状态下的效果如下: 也就是说,QQ音乐播放过程中,添加锁屏远程事件的监听. 本文只记录本人知道的小知识点,不提供完整的代码. 实现的原理: (1)获取锁屏歌曲信息中心:MPN ...

  4. 一篇文章让你彻底理解java中抽象类和接口

    目录 1.我所理解的抽象类 2.我所理解的接口 3.抽象类和接口本质区别 相信大家都有这种感觉:抽象类与接口这两者有太多相似的地方,又有太多不同的地方.往往这二者可以让初学者摸不着头脑,无论是在实际编 ...

  5. 从函数计算架构看 Serverless 的演进与思考

    作者 | 杨皓然  阿里巴巴高级技术专家 导读:云计算之所以能够成为 DT 时代颠覆性力量,是因为其本质是打破传统架构模式.降低成本并简化体系结构,用全新的思维更好的满足了用户需求.而无服务器计算(S ...

  6. Bash 内置高效特性

    变量(字符串)变换 定义一个变量t,内容为framE [root@vm1 tmp]# t=framE 查看变量t的内容:echo $t或者是echo ${t} [root@vm1 tmp]# echo ...

  7. CVE-2019-13272Linuxkernel权限许可和访问控制问题漏洞

    漏洞简介: Linuxkernel是美国Linux基金会发布的开源操作系统Linux所使用的内核. Linuxkernel5.1.17之前版本中存在安全漏洞,该漏洞源于kernel/ptrace.c文 ...

  8. JC的小苹果 逆矩阵

    这题主要有两种做法:1种是用逆矩阵,转移时无须高斯消元.2是将常数项回代.这里主要介绍第一种. 首先题里少个条件:点权非负.设f [ i ][ j ]表示hp为i时,到达j点的期望次数. 那么若点权为 ...

  9. DFS深度优先算法学习

    刚开始学习算法,参考大佬博客还是有很多不明白的,于是一步步解析,写下笔记记录. 大佬博客地址: https://blog.csdn.net/fuzekun/article/details/852204 ...

  10. C#动态多态性的理解

    C#动态多态性是通过抽象类和虚方法实现的. 抽象类的理解 用关键字abstract创建抽象类,用于提供接口的部分类的实现(理解:接口不能提供实现,抽象类中可以有实现,接口与抽象类一起使用,可以达到父类 ...