python_5、面向对象相关:类和对象

面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板。
比如Student类,而实例是根据类创建出来的一个个具体的"对象",每个对象都拥有相同的方法,但各自的数据可能不同。
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。
所谓的类,其实指的就是一个类别,即具有相同属性与行为的所有对象构成的一个整体。
相同类别的对象之间总会比不同类别的对象之间更加相似。

方法:类中定义的函数。
对象:就是类的实例。通过类定义的数据结构实例。对象包括两个成员:属性(类变量和实例变量)和方法(类方法和示例方法)。
对于对象而言,有属性和方法,属性,名词,存储数据,方法,动词,表示行为

  class Student():
    name = "huangbo"
    def study():
        pass

类和对象的关系:
 类是对象的抽象,而对象是类的具体表现形式。
 类是设计的蓝图(模板),而对象就是该蓝图设计出的具体产物。

类变量:类变量在所有实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
直接通过类名来访问

局部变量:定义在方法中的变量,只作用于当前实例的类。

实例变量:在类的声明中,属性是用变量来表示的。这种变量就称为实例变量,
是在类声明的内部但是在类的其他成员方法之外声明的。

     Student
        name
        age
        score

        在类中定义的变量是所有实例对象都有的。但是也会出现某个变量是某个实例所独有的。

数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。

方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,
这个过程叫方法的覆盖(override),也称为方法的重写。

继承:即一个派生类(derived class)继承基类(base class)的字段和方法。
假如现在有一个类:People(name,age)
现在还有一个类:Student(name,age)
现在还有一个类:Teacher(name,age)
继承也允许把一个派生类的对象作为一个基类对象对待。
例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例如:Dog是一个Animal)。

实例化:创建一个类的实例,类的具体对象。

定义一个类,继承自object类,object类是所有类的父类
pass关键字,只有一个作用:如果你要定义某个东西,但是现在还没想到到底该怎么写,
所以为了保证代码不报错,先在要实现代码的地方,写一个pass, 就证明此处未写完,但是Python解释器遇到的时候不会报错

class A(object):
    age = 18    # 类属性

创建一个A类的对象a,创建对象使用类名+()的方式

a = A()
a1 = A()

给对象绑定一个name属性, name是一个实例属性

a.name = "huangbo"

print(a, A, a.name)
print(a.age,  a1.age)


print("-------------------------------0-----------------------------------")


class Student(object):

xxx = "abc"  # 类变量,所有实例对象都能访问的

注意:特殊方法"init"前后分别有两个下划线 第一个参数永远是self,表示创建的实例本身
因此,在init方法内部,就可以把各种属性绑定到self,因为self就指向创建的实例本身。

def __init__(self, name, score):
    """
    :param name:   实例属性
    :param score:   实例属性
    """
    self.name = name
    self.score = score

类的方法/行为/函数:普通函数对比有一点不同,就是第一个参数永远是self
除此之外,类中函数和普通函数没有什么区别,依然可以定义默认参数,可变参数,关键字参数和命名关键字参数

def print_score(self):
    print('%s: %s' % (self.name, self.score))

def get_grade(self):
    if self.score >= 90:
        return 'A'
    elif self.score >= 60:
        return 'B'
    else:
        return 'C'

构建对象,在调用类名+()的形式构建对象的时候,会调用在类中定义的init方法执行。
所以如果有什么需要在类对象创建好之后做一些初始化操作的,都可以放置在init方法中

s = Student("huangbo", 99)
print(s.name, s.score)


s.print_score()


print(s.get_grade())

print("-------------------------------1-----------------------------------")

继承

class Student1(Student):
"""
父类所具有的属性,和方法,子类可以通过继承来获取
"""
def __init__(self, age):
    self.age = age


s1 = Student1(18)
print(s1.xxx,  s1.age)
s1.aaaaa = 123   #  aaaaa 是实例属性


print(type(s1))
print(isinstance(s1, Student))
print(isinstance(s1, Student1))

"""
总结:
1、类是创建实例的模板,而实例则是一个一个具体的对象,各个实例拥有的数据都互相独立,互不影响;
2、方法就是与实例绑定的函数,和普通函数不同,方法可以直接访问实例的数据;
3、通过在实例上调用方法,我们就直接操作了对象内部的数据,但无需知道方法内部的实现细节。
4、和静态语言不同,Python允许对实例变量绑定任何数据,也就是说,对于两个实例变量,
虽然它们都是同一个类的不同实例,但拥有的变量名称都可能不同:

"""

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,794评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,050评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,587评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,861评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,901评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,898评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,832评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,617评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,077评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,349评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,483评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,199评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,824评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,442评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,632评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,474评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,393评论 2 352

推荐阅读更多精彩内容