我的编程空间,编程开发者的网络收藏夹
学习永远不晚

面向对象之类的成员,嵌套

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

面向对象之类的成员,嵌套

类的成员可分为三大类:字段丶方法和属性

  字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同.

  普通字段属于对象

  静态字段属于类

class Foo:
    #类变量(静态字段)
    country = "你好"

    def __init__(self,name):
        # 实例变量(普通字段)
        self.name = name
    def too(self):
        print("===========")

#直接访问普通字段
obj = Foo("李白")
obj.too()
#直接访问静态字段
print(Foo.country)

 

  由上述代码可以看出[普通字段需要通过对象来访问] [静态字段通过类访问],在使用上可以看出普通字段和静态字段的归属是不同的,其在内容的存储方式也不一样,静态字段在内存中只保存一份,普通字段在每个对象中都要保存一份

  上面我们看到的两种字段都是公有字段,下面为私有字段

class Foo:
    #类变量(静态字段)
    country = "你好"
    #私有类变量(静态字段)
    __ctorens = "再见"

    def __init__(self,name,phone):
        # 实例变量(普通字段)
        self.name = name
        #私有示例变量(普通字段)
        self.__phone = phone
    def too(self):
        print(Foo.__ctorens)

#直接访问普通字段
obj = Foo("李白","165136851546")
obj.too()
#直接访问静态字段
print(Foo.country)
#在类外面是没法访问类中的私有字段的,所以这里会报错
print(Foo.ctorens)

 

  方法包括普通方法丶静态方法和类方法,三种方法在内存中都归属于类,区别在于调用方式不同

   1.普通方法:由对象调用,至少一个self参数,执行普通方法时,自动将调用该方法的对象赋值给self

   2.类方法:由类调用,至少一个cls参数,执行类方法时,自动将调用该方法的类赋值给cls

   3.静态方法:由类调用,无默认参数

# 实例方法
class Foo:
    def __init__(self,name):
        self.name = name
    #实例方法
    def tom(self):
        pass
obj = Foo("XX")
obj.tom()

#静态方法
#在方法前面加@staticmethod,方法名中的self也不用写了,可以写任何参数,调用直接用  类名.方法名(参数) 调用
class Foo:
    def __init__(self,name):
        self.name = name
    #静态方法,如果方法无需使用对象中封装的值,那么就可以使用静态方法
    @staticmethod
    def tom(a,b):
        print(a,b)
Foo.tom(1,2)

# 类方法
#在方法前面加上@classmethod,方法名中参数必须有cls,cls是指类
class Foo:
    def __init__(self,name):
        self.name = name

    def show1(self):
        print(self)
    # 类方法
    @classmethod
    def show(cls,a,b):
        print(cls,a,b)  #<class '__main__.Foo'> 1 2
Foo.show(1,2)

  方法跟字段一样,也分为私有跟公有,私有就是在方法名前面加上__,调用是不能在类外面直接调用,需要调用类中的一个公有方法,再在公有方法里调用私有方法

class Foo:
    def __init__(self,name):
        self.name = name

    def show1(self):
        Foo.__show(1,2)
    # 私有类方法
    @classmethod
    def __show(cls,a,b):
        print(cls,a,b)  #<class '__main__.Foo'> 1 2

obj = Foo("XX")
obj.show1()

 

 

  属性的定义时就是在普通方法的基础上添加@property装饰器,属性仅有一个self参数,调用时无需括号

 

class Foo(object):
    def __init__(self):
        pass
    #属性在方法名前面加上@property
    @property  
    def start(self):
        return 1

obj = Foo()
print(obj.start)    #无需加括号,直接调用

 

 

  两个类中的变量互相建立关系就叫嵌套

class School:
    def __init__(self,name):
        self.name = name
obj = School("舞蹈教室")
obj1 = School("音乐教室")
obj2 = School("美术教室")


class Teacher:
    def __init__(self,name):
        self.name = name
t = Teacher("舞蹈老师")
t1 = Teacher("音乐老师")
t2 = Teacher("美术老师")

#############为老师分配教室
t.School = obj
t1.School = obj1
t2.School = obj2
############查看t1老师所在的教室
print(t1.School.name)

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

面向对象之类的成员,嵌套

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

面向对象之类的成员,嵌套

类的成员可分为三大类:字段丶方法和属性  字段包括:普通字段和静态字段,他们在定义和使用中有所区别,而最本质的区别是内存中保存的位置不同.  普通字段属于对象  静态字段属于类class Foo: #类变量(静态字段) coun
2023-01-30

python面向对象之类成员

一、概述       上篇《python面向对象OOP》介绍了python面向对象的基础初级入门部分,提到了类的定义,使用,类的三大特性;经典类,新式类在查找时的区别等,有了前面的基础,本文接着描述面向对象中类成员;先整体描述下,类中的成员
2023-01-31

python之成员(面向对象)

1. 成员   在类中你能写的所有内容都是类的成员  class Person: def __init__(self, name, gender): self.name = name # 成员
2023-01-30

python 面向对象(成员)

1. 成员    在类中你能写的所有内容都是类的成员2. 变量    1. 实例变量: 由对象去访问的变量.class Person: def __init__(self, name, id, gender, birth):
2023-01-30

Python面向对象进阶及类成员

再次了解多继承先来一段代码#!/usr/bin/env python# _*_ coding:utf-8 _*_class A:    def bar(self):        print("BAR")        self.f1()c
2023-01-31

Python面向对象(成员)(二)

1. 成员     在类中你能写的所有内容都是类的成员 2. 变量     1. 实例变量: 由对象去访问的变量.class Person: def __init__(self, name, id, gender, birth):
2023-01-30

Python面向对象特殊成员

类的特殊成员之call#!/usr/bin/env python # _*_coding:utf-8 _*_ class SpecialMembers:# 类的构造方法def __init__(self):print("My Blog is
2022-06-04

Java 面向对象 之 抽象类 abstract

转载于 : http://www.verejava.com/?id=16992804621647 /**知识点: 抽象类 abstract题目: 爸爸叫我买一斤水果和一条鱼思路:1. 抽象出类:爸爸(Father), 儿子(Son), 水果
2023-06-02

python 面向对象之类的继承

python中什么是继承:新类不必从头编写新类从现有的类继承,就自动拥有了现有类的所有功能新类只需要编写现有类缺少的新功能继承的好处:复用已有代码自动拥有了现有类的所有功能只需要编写缺少的新功能继承的特点:子类和父类是is关系python继
2023-01-30

面向对象之套接字(socket)和黏包

tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端  基于UDP协议的socket  server端:import socketudp_sk = socket.socket(type=socket.SOCK_DGRAM)
2023-01-30

python 面向对象之类方法

类方法通过@classmethod装饰器实现,类方法和普通方法的区别是, 类方法只能访问类变量,不能访问实例变量举个例子classDog(object):def__init__(self,name):self.name=name@class
2023-01-30

Python面向对象(类之间的关系)(三

类与类之间的关系     在我们的世界中事物和事物之间总会有一些联系.     在面向对象中. 类和类之间也可以产生相关的关系     1. 依赖关系         执行某个动作的时候. 需要xxx来帮助你完成这个操作. 此时的关系是最轻
2023-01-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录