面向对象和类

#!/usr/bin/python

#-*-coding:utf-8 -*-

#!/usr/bin/python

#-*-coding:utf-8 -*-

# class 类名:

# ‘‘‘文档注释‘‘‘

# 类体

#类 特征+技能 类是一系列对象的特征(变量)和技能(函数)的结合体

# class chinese:

# country=‘china‘

# jiguan=‘haihai‘

# def talk(self): #这个self 是要传入参数的 否则报错

# print(‘talking‘,self)

# # p=chinese()

# print(p)

#类 在定义节点 运行就会执行 不用专门执行

#类的两种用法

#1.属性的引用

#2.实例化

#1.属性的引用

# print(chinese.country) #china

# print(chinese.talk) #内存地址

# chinese.talk(123) ##类调用函数 就得传参数

# ##增加修改属性

# chinese.x=1

# print(chinese.x)

# chinese.country=‘jianada‘

# print(chinese.country)

# print(chinese.jiguan)

# del chinese.jiguan #删除属性

# print(chinese.jiguan)

#2.实例化

#类() 就是类的实例化,得到的是一个具体的对象

# p1=chinese()

# print(p1)

# ‘‘‘

# <__main__.chinese object at 0x000002528CD6D7F0>

# ‘‘‘

‘‘‘

对象只有一种,就是属性引用

‘‘‘

# p1=chinese()

# print(p1)

# print(p1.country) #china

# p2=chinese()

# print(p2)

# print(p2.country) #china

#对象有共同的特征,也有各自不同的特征,以下是类里定义 共同特征 不同特征

#__init__

# class chinese:

# country=‘china‘

# def __init__(self,name,age,sex,): #定义不同 name age sex

# self.Name=name #self.大小写都可以 p1.Name=name

# self.Age=age #p1.Age=age

# self.Sex=sex #p1.Sex=sex

# def talk(self):

# print(‘talkint‘,self.Name) #self.Name 可以看到具体是谁调用的

#

# # p1=chinese()

# print(p1)

‘‘‘

TypeError: __init__() missing 3 required positional arguments: ‘name‘, ‘age‘, and ‘sex‘

‘‘‘

‘‘‘

解释:

def __init__(self,name,age,sex,): 这里有4个参数 但是报错三个参数没有传

因为会把对象作为参数传给self

p1=chinese() 比如这个就会把p1作为参数传给self

# ‘‘‘

# p1=chinese(‘agon‘,‘18‘,‘male‘)

# print(p1)

# print(p1.country)

# print(p1.Name)

# print(p1.Age)

# print(p1.talk()) #对象直接调用 又把自己作为参数传进去了

# # ‘‘‘

# <__main__.chinese object at 0x000002BC683DD9B0>

# china

# agon

# 18

#

# ‘‘‘

‘‘‘

类与对象的名称空间以及绑定方法

‘‘‘

class chinese:

country=‘china‘

def __init__(self,name,age,sex,): #定义不同 name age sex

self.Name=name #self.大小写都可以 p1.Name=name

self.Age=age #p1.Age=age

self.Sex=sex #p1.Sex=sex

def talk(self):

print(‘talkint‘,self.Name) #self.Name 可以看到具体是谁调用的

p1=chinese(‘qiqi‘,‘22‘,‘male‘)

# print(p1)

p2=chinese(‘nini‘,‘22‘,‘male‘)

print(chinese.__dict__) #查看chinese的内置名称空间

‘‘‘

字典的格式

{‘__module__‘: ‘__main__‘, ‘country‘: ‘china‘,

‘__init__‘: <function chinese.__init__ at 0x00000257E4E9EF28>,

‘talk‘: <function chinese.talk at 0x00000257E4EA3048>,

‘__dict__‘: <attribute ‘__dict__‘ of ‘chinese‘ objects>,

‘__weakref__‘: <attribute ‘__weakref__‘ of ‘chinese‘ objects>,

‘__doc__‘: None}

‘‘‘

print(p1.__dict__)

‘‘‘

{‘Name‘: ‘qiqi‘, ‘Age‘: ‘22‘, ‘Sex‘: ‘male‘}

‘‘‘

print(p1.country) #先去自己的__dict__里找,没有再去类里找 再没有就没了

print(id(p1.country)) #查看id

print(id(p2.country)) #查看id

‘‘‘

id 一样 因为是共同的属性

1879109063152

1879109063152

‘‘‘

print(chinese.talk)

print(p1.talk) #查看id

print(p2.talk) #查看id

‘‘‘

长得并不一样

虽然是共同属性 但是talk的self传入的是对象本身 对象不同 最后结果不同

<function chinese.talk at 0x000002C6104D3048>

<bound method chinese.talk of <__main__.chinese object at 0x000002C6104CD198>>

<bound method chinese.talk of <__main__.chinese object at 0x000002C6104CDAC8>>

‘‘‘

时间: 2024-08-24 16:30:27

面向对象和类的相关文章

黑马程序员-面向对象-Object类

---------------------- <a href="http://edu.csdn.net"target="blank">ASP.Net+Unity开发</a>.<a href="http://edu.csdn.net"target="blank">.Net培训</a>.期待与您交流! ---------------------- 一.Object类中的equals(

.Net学习 第2季05 C#面向对象 Path类 File类

.Net 视频学习第2季 C#面向对象 面向对象 Path类 File类 Path类,命名空间IO,静态类 Path.GetFileName(str),返回文件路径中的文件名,返回值为string Path.GetFileNameWithoutExtension(str),返回文件路径中的文件名,不带扩展名,返回值为string Path.GetExtension(str),返回文件路径中的文件的扩展名,返回值为string Path.GetDirectoryName(str),返回文件所在的全

iOS runtime探究(一): 从runtime开始理解面向对象的类到面向过程的结构体

你要知道的runtime都在这里 转载请注明出处 http://blog.csdn.net/u014205968/article/details/67639205 本文主要讲解runtime相关知识,从原理到实践,由于包含内容过多分为以下五篇文章详细讲解,可自行选择需要了解的方向: 从runtime开始: 理解面向对象的类到面向过程的结构体 从runtime开始: 深入理解OC消息转发机制 从runtime开始: 理解OC的属性property 从runtime开始: 实践Category添加属

OC学习总结之面向对象和类

OC学习总结之面向对象和类 Objective-c是c语言的母集合,它的原意就是在原始的c语言的主体上加入面向对象的特性.1.面向对象和面向过程  面向对象和面向过程是编程的两种思考方式.面向对象,简称OOP,它是以事物为中心,参与事件的事物是核心,完成事件只是事物的一个小任务.面向过程,简称OPP,它是以事件为中心,事件是核心,列出了完成事件的每一个步骤,一步一步完成.也就是面向对象侧重于从问题在寻找客体.客体的作用.客体间的关系即“谁”.“做什么”.“怎么做”,面向过程侧重于问题的分解即“事

第9篇-JAVA面向对象-常用类Ⅴ

第9篇-JAVA面向对象-常用类Ⅴ 每篇一句 :巨轮寻深水而航行 初学心得: 没有胆大的猜测就没有伟大的发现 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-13| JAVA面向对象 Ⅴ] 1.JAVA Scanner类 java.util.Scanner 是 Java5 的新特征,读者可以通过 Scanner 类来获取用户的输入 创建 Scanner 对象的基本语法格式: Scanner s = new Scanner(System.in); 使用 next 方法代码: 1

Php面向对象 – Final类

该类,只能被实例化对象不能用于被继承. 设计时,该类不能再扩展了,就应该通过语法final限制,其他用户扩展该类. 定义: 在class前,增加final关键字. 例子: class Goods { public  $goods_name; public  $shop_price; public  function __construct($name,$price) { $this->goods_name= $name; $this->shop_price= $price; } } final

面向对象,类的继承

面向对象一种认识世界.分析世界的方法论.将万事万物抽象为类.类class类是抽象的概念,是万事万物的抽象,是一类事物的共同特征的集合.用计算机语言来描述类,就是属性和方法的集合.对象instance.object对象是类的具象,是一个实体.对于我们每个人这个个体,都是抽象概念人类的不同的实体. 面向对象3要素 封装组装:将数据和操作组装到一起.隐藏数据:对外只暴露一些接口,通过接口访问对象.比如驾驶员使用汽车,不需要了解汽车的构造细节,只需要知道使用什么部件怎么驾驶就行,踩了油门就能跑,可以不了

Python面向对象02/类的空间问题

Python面向对象02/类的空间问题 内容大纲 1.从空间角度研究类 2..类与类之间的关系 1.类的空间问题 1.1何处可以添加对象属性 在类的__init__可以添加,在类的方法也可以添加,在类的外部也可以添加 # class Human: # # mind = '有思想的' # # def __init__(self, name, age): # self.name = name # self.age = age # # def eat(self,argv): # # self.hobb

面向对象1——类的成员

面向对象1--类的成员 面向对象三大特征:1.封装 2.继承 3.多态 opp就是可以做到分解代码.最小化代码冗余以及对现有的代码进行定制再编写程序,而不是实地修改代码,或从头开始 一.类的成员: 1.字段:普通字段,静态字段 2.方法:普通方法,类方法,静态方法 3.属性 class Person: country = 'CN' #静态字段 __money = 99999 #私有静态字段 def __init__(self,name): self.name = name #普通字段 self.

疯狂java学习笔记之面向对象-定义类、方法、构造器

Java面向对象 1.定义类 2.创建对象.调用方法 类和对象: 某一类对象的概念定义. 比如:人类 - 抽象出来的概念(不特指某个人) 对象 - 在类的概念下产生的一个实例,它就是一个对象了. java程序中,类是最小的程序单位 - 所有的java程序都必须从定义类开始 定义类的语法格式: [修饰符]  class  类名{ //0 ~ N 个 Field 定义 //0 ~ N 个 方法定义 //0 ~ N个 构造器定义 } 一个类中最多只能出现五种成分:Field.方法.构造器 一个类最常见