面向对象之入门-《初识》

一、面向对象初识:

   1、结构上理解:类由两部分组成

     class  A:      # class是类的关键字,类名首字母默认大写

       name = ‘zyl‘   # 静态属性,静态变量,静态字段

       def  func1(self):  # 函数,动态属性,方法

         pass

   2、函数 vs 面向对象:

      1、函数封装一个功能,而面向对象封装多个相关的功能。

      2、面向对象抽象,它是一种思想,站在上帝的角度去理解它。

      3、程序可扩展,对象都是一个个独立的,耦合性,差异性。

def register(argv):
    pass

def login(argv):
    pass
def shoppingcar(argv):
    pass

class Shopping_Car:
    def __init__(self):  # 特殊方法
        pass

    def register(self):
        pass

    def login(self):
        pass
    def shoppingcar(self):
        pass

   3、类,对象

      类:具有相同属性或者功能的一类实物。

      对象:对象是类的具体表现。

二、类名,对象的使用:

    一个公共框架,一个公共模型

   类名:

    1、查看类中的所有属性及方法 __dict__(查看单个属性和方法也可以用__dict__[ ],但不建议用)

    2、查看,(增删改)类中的某个,某些属性用(万能的点).

    3、操作方法,一般不通过类名操作!!!

class Person:
    animal = ‘高级动物‘
    walk_way = ‘直立行走‘
    language = ‘语言‘

    def eat(self):
        print(‘吃饭‘)
    def word(self):
        print(‘人类需要工作‘)

print(Person.__dict__)        # 查    所有的属性和方法  {‘__module__‘: ‘__main__‘, ‘animal‘: ‘高级动物‘, ‘walk_way‘: ‘直立行走‘, ‘language‘: ‘语言‘, ‘eat‘: <function Person.eat at 0x0000024742B176A8>, ‘word‘: <function Person.word at 0x0000024742B17730>, ‘__dict__‘: <attribute ‘__dict__‘ of ‘Person‘ objects>, ‘__weakref__‘: <attribute ‘__weakref__‘ of ‘Person‘ objects>, ‘__doc__‘: None}

print(Person.animal)          # 查
Person.animal = ‘低级动物‘    # 改
Person.name = ‘alex‘         # 增
del Person.animal            # 删
print(Person.name)
print(Person.animal)  #AttributeError: type object ‘Person‘ has no attribute ‘animal‘属性已被删除
Person.eat(12)             # 执行一个方法
print(Person.word(123))     # 执行方法并返回 None
Person.age = 18
print(Person.age)

   对象:

    实例化过程内部进行了三个阶段:

      1、在内存中开辟了一个对象空间

      2、自动执行类中的__init__方法,并且将对象空间自动传给self参数,其他参数手动传入

      3、执行__init__方法,给对象空间封装相应的属性。

class Person:

    animal = ‘高级动物‘
    walk_way = ‘直立行走‘
    language = ‘语言‘

    def __init__(self,name,age,eye):  # 功能:给对象封装属性的。
        self.name1 = name
        self.age1 = age
        self.eye1 = eye

    def eat(self):
        print(‘该吃吃,该喝喝,啥事别忘心里搁‘)

    def work(self):
        print(‘人类都需要工作。。。‘)

obj = Person(‘alex‘,1000,‘小眼睛‘)  # 这个过程是一个实例化过程,他会实例化一个对象(他会在内存实例化一个对象空间)。
print(obj)  # 对象空间的内存地址
print(obj.name1)

    对象操作对象空间:

      1、查看对象空间所有的属性 __dict__

        print(对象名.__dict__)

      2、对象操作对象的某个属性(增删改查)用(万能的点)       

obj.sex = ‘男‘      # 增
del obj.eye1        # 删
obj.eye1 = ‘大一点‘  # 改
print(obj.name1)    # 查 单个
print(obj.__dict_)  # 查 全部对象(返回一个字典)

# alex
# {‘name1‘: ‘alex‘, ‘age1‘: 1000, ‘eye1‘: ‘小眼睛‘}

      3、对象操作类空间的属性:只能查

print(obj.animal)          # 现在对象空间找,没有的话到类空间里找
obj.animal = ‘低级动物‘     # 不能改变类空间的属性,所以是新增一个对象属性
print(obj.animal)          # 打印的是对象空间里新增的属性
print(obj.__dict__)
print(Person.__dict__)

      4、对象操作类空间的方法

print(obj)  # 打印对象空间内存地址
obj.eat()   # 对象操作类空间的方法

三、类名称空间,对象名称空间:

   1、对象为什么能调用类中的属性与方法而且只是调用,不能改变?  

      先从自己空间找,没有此属性他会通过类对象指针去类空间找,类中找不到到父类中找

      对象只能查看类中的属性,不能增删改类中的属性。

   2、类能不能调用对象的属性?  不能

   3、对象与对象之间可不可以互相调用?

      同一个类实例化出来的对象之间是不能互相访问的

      不同类实例化 对象有可能互相访问

   给对象封装属性:对象名.__init__  (任意位置)

原文地址:https://www.cnblogs.com/zyling/p/12623351.html

时间: 2024-10-16 16:02:53

面向对象之入门-《初识》的相关文章

JavaScript面向对象轻松入门之封装(demo by ES5、ES6、TypeScript)

本章默认大家已经看过作者的前一篇文章 <JavaScript面向对象轻松入门之抽象> 为什么要封装? 封装(Encapsulation)就是把对象的内部属性和方法隐藏起来,外部代码访问该对象只能通过特定的接口访问,这也是面向接口编程思想的一部分. 封装是面向对象编程里非常重要的一部分,让我们来看看没有封装的代码是什么样的: 1 function Dog(){ 2 this.hairColor = '白色';//string 3 this.breed = '贵宾';//string 4 this

Python入门 —— 初识Python

Python入门 —— 初识Python Python入门 —— 初识Python 一:Python介绍 1. Python是什么? Python是一门编程语言,编程语言是一门语言. 语言就是一个事物与另一个事物沟通的工具. 而编程语言则是人与计算机沟通的介质. 2. 为什么要跟计算机沟通:为了奴役计算机 奴隶主--------(人类语言)------->奴隶 人类----------(编程语言)------->计算机 3. 什么是编程? 奴隶主把想让计算机替自己做事情的逻辑用编程语言给表达出

C++面向对象多线程入门

第1节   背景 为了更好的理解多线程的概念,先对进程,线程的概念背景做一下简单介绍. 早期的计算机系统都只允许一个程序独占系统资源,一次只能执行一个程序.在大型机年代,计算能力是一种宝贵资源.对于资源拥有方来说,最好的生财之道自然是将同一资源同时租售给尽可能多的用户.最理想的情况是垄断全球计算市场.所以不难理解为何当年IBM预测“全球只要有4台计算机就够了”. 这种背景下,一个计算机能够支持多个程序并发执行的需求变得十分迫切.由此产生了进程的概念.进程在多数早期多任务操作系统中是执行工作的基本

php面向对象编程入门

1.发展与解释: 汇编:面向机器 C语言:面向过程 java:面向对象 php:支持面向对象 其实类也是一种数据类型 a.类是抽象的,代表一类事物 b.对象是具体的,是类的一个具体实例 c.类是对象的模板,对象是类的一个个体实例 2.简单入门案例: <?php class Cat { public $name; public $age; public $color; } $cat1=new Cat(); //对类进行实例化/创建一个对象/实例化对象 三者说法同种意思 $cat1->name=&

JavaScript面向对象轻松入门之多态(demo by ES5、ES6、TypeScript)

多态(Polymorphism)按字面的意思就是"多种状态",同样的行为(方法)在不同对象上有不同的状态. 在OOP中很多地方都要用到多态的特性,比如同样是点击鼠标右键,点击快捷方式.点击桌面空白处.点击任务栏等弹出的菜单都是不同的. 方法重写(override): 即子类定义一个与父类名字相同的方法,以此覆盖父类方法,以此来实现不同的功能. 1 function Animal(){} 2 var AnimalP = Animal.prototype; 3 AnimalP.eat =

C#面向对象(OOP)入门—第二天—多态和继承(继承)

介绍: 第一天的内容主要是不同情形下的方法重载.这一部分则主要讲面向对象中继承的概念.首先用一个要点图形来定义继承. 继承 一个简单的例子: ClassA: class ClassA:ClassB { public void Display1() { Console.WriteLine("ClassA Display1"); base.Display1(); } } ClassB: class ClassB { public int x = 100; public void Displ

JavaScript面向对象轻松入门之概述(demo by ES5、ES6、TypeScript)

写在前面的话 这是一个JavaScript面向对象系列的文章,本篇文章主要讲概述,介绍面向对象,后面计划还会有5篇文章,讲抽象.封装.继承.多态,最后再来一个综合. 说实话,写JavaScript面向对象的文章实在是太多了,网上一搜一大堆,很多书里面也介绍的很详细.但作者当初在学习面向对象的时候还是非常困难,特别是在习惯了面向过程编程的情况下,不知道大家有没有这个感受. 作者分析了一下其中的原因,恐怕是因为里面涉及的概念太多:原型.原型链.继承.this.constructor.call等等,这

JavaScript面向对象轻松入门之继承(demo by ES5、ES6)

继承是面向对象很重要的一个概念,分为接口继承和实现继承,接口继承即为继承某个对象的方法,实现继承即为继承某个对象的属性.JavvaScript通过原型链来实现接口继承.call()或apply()来实现实现继承. 接口继承的实现在ES5中是比较麻烦,在其它OOP语言中一个extends关键字就可以实现,但在ES5中要通过原型链去模拟,非常难理解,对初学者很不友好,并且有好几种接口继承的方式.本文为了对初学者更友好,并不打算让读者了解接口继承的原理,而是直接把接口继承实现方法封装成一个函数,大家只

《Java从入门到放弃》JavaSE入门篇:面向对象概念(入门版)

要知道什么是面向对象,你首先要有个对象吧,所以······没有对象的可以回家洗洗睡了· 好吧,前面是开玩笑,要说明什么是面向对象,我们还是先 例子: 小呆:"小傻,你今天早餐吃的什么?" 小傻:"吃的东西可多啦,有两片面包,一块鸡肉饼,几片菜叶子,一点沙拉酱,另外还喝了一杯可乐,一袋油炸土豆条" 小呆:"小傻,你四不四洒啊!你直接说你吃的鸡肉堡套餐不行么 - -" 小傻:"呃,好吧,我吃的这个鸡肉汉堡套餐" OK,从上面的例子