Python基础——类和对象

Python基础——类和对象,第1张

Python基础——类和对象

文章目录
  • **类和对象**
    • 一.对象=属性+方法
    • 二.公有和私有
    • 三.继承
    • 四.组合
    • 五.类、类对象、实例对象
    • 六.绑定
    • 七.与类和对象相关的一些常用BIF(内置函数)
  • **上一阶段考核分析**

类和对象 一.对象=属性+方法

一个对象的特征称为"属性",在代码层面来看就是变量;一个对象的行为称为"方法",实际就是函数,通过调用这些函数来完成某些工作。
需要使用类来创建一个真正的对象,这个对象就称为这个类的一个实例,也叫实例对象。类名约定用大写。

class Turtle:
    color="green"
    weight=10
    legs=4
    shell=True
    mouth="大嘴"
    def climb(self):
        print("我正在很努力地向前爬...")
    def run(self):
        print("我正在飞快地向前跑")
    def bite(self):
        print("咬死你咬死你!")
    def eat(self):
        print("有得吃,真满足")
    def sleep(self):
        print("困了,睡了,晚安")
tt=Turtle()
tt.sleep()

二.公有和私有

默认对象的属性和方法都是公开的,可以直接通过点 *** 作符(.)进行访问。在Python中定义私有变量只需要在变量名或函数名前加上"__"两个下划线,函数就会变成私有。(只是一种名字改编技术)

class Person:
    name = "小甲鱼"
    
p = Person()
print(p.name)
"小甲鱼"
class Person:
    def __init__(self,name):
        self.__name = name
    def getName(self):
        return self.__name
p = Person("小甲鱼")
print(p._Person__name)
"小甲鱼"
三.继承

被继承的类称为基类、父类或超类;继承者称为子类,一个子类可以继承它的父类的任何属性和方法。

class Parent:
    def hello(self):
        print("正在调用父类的方法")
class Child (Parent):
    pass
p=Parent()
p.hello()
正在调用父类的方法
c=Child()
c.hello()
正在调用父类的方法

3.1 调用未绑定的父类方法

import random as r
class Fish:
    def __init__(self):
        self.x=r.randint(0,10)
        self.y=r.randint(0,10)
    def move(self):
        self.x -=1
        print("我的位置是:",self.x,self.y)
class Goldfish(Fish):
    pass
class Carp(Fish):
    pass
class Salmon(Fish):
    pass
class Shark(Fish):
    def __init__(self):
        Fish.__init__(self)
        self.hungry = True
    def eat(self):
        if self.hungry:
            print("吃货的梦想就是天天有得吃")
            self.hungry = False
        else:
            print("太撑了,吃不下了")

3.2 使用super函数
super函数的”超级"之处在于:不需要明确给出任何基类的名字,它会自动找出所有基类以及对应的方法。

#将3.1的代码进行如下修改
class Shark(Fish):
    def __init__(self):
        super().__init__()
        self.hungry = True
 

(补充:通常把__init__()方法称为构造方法,init()方法的魔力体现在只要实例化一个对象,这个方法就会在对象被构造时自动调用。)
3.3多重继承
多重继承是指同时继承多个父类的属性和方法。

class base1:
    def fool(self):
        print("我是fool,我在base1中")
class base2:
    def foo2(self):
        print("我是foo2,我在base2中")
class C(base1,base2):
    pass
c=C()
c.fool()
我是fool,我在base1中
c.foo2()
我是foo2,我在base2中
四.组合

把需要的类放在一起实例化就叫组合。

class Turtle:
    def __init__(self,x):
        self.num = x
class Fish:
    def __init__(self,x):
        self.num = x
class Pool:
    def __init__(self,x,y):
        self.turtle = Turtle(x)
        self.fish =Fish(y)
    def print_num(self):
        print("水池里总共有乌龟%d只,小鱼%d条"%(self.turtle.num,self.fish.num))
 #先运行代码
 pool =Pool(1,10)
 pool.print_num()
 水池里总共有乌龟1只,小鱼10条

五.类、类对象、实例对象
class C:
	count = 0
a = C()
b = C()
c = C()
print(a.count,b.count,c.count)
0 0 0
c.count +=10
print(a.count,b.count,c.count)
0 0 10
C.count +=100
print(a.count,b.count,c.count)
100 100 10
六.绑定
class BB:
    def printBB():
        print("no zuo no die")
class CC:
    def setXY(self,x,y):
        self.x=x
        self.y=y
    def printXY(self):
        print(self.x,self.y)
dd=CC()
print(dd.__dict__)
print(CC.__dict__)
dd.setXY(4,5)
print(dd.__dict__)
print(CC.__dict__)
del CC
dd.printXY()
七.与类和对象相关的一些常用BIF(内置函数)

7.1issubclass(class,classinfo)
如果第一个参数(class)是第二个参数(classinfo)的一个子类,则返回True,否则返回False。
1)一个类被认为是其自身的子类。
2)classinfo可以是类对象组成的元组,只要class是其中任何一个候选类的子类,则返回True。
3)在其他情况下,会抛出一个TypeError异常。

class A:
	pass
class B(A):
	pass
issubclass(B,A)
True
issubclass(B,B)
True
issubclass(B,object)
True
class C:
	pass
issubclass(B,C)
False

7.2isinstance(object,classinfo)
如果第一个参数(object)是第二个参数(classinfo)的实例对象,则返回True,否则返回False。
1)如果object是classinfo的子类的一个实例,也符合条件。
2)如果第一个参数不是对象,则永远返回False。
3)classinfo可以是类对象组成的元组,只要object是其中任何一个候选类的子类,则返回True。
4)如果第二个参数不是类或者由类对象组成的元组,会抛出一个TypeError异常。

issubclass(B,C)
False
b1 =B()
isinstance(b1,B)
True
isinstance(b1,C)
False
isinstance(b1,A)
True
isinstance(b1,(A,B,C))
True
上一阶段考核分析

上周进行了第一次小组考核,成绩十分不理想,我要深刻反省自己。在考核时,每道题看着都眼熟,但到了自己上手的时候都不会做,这是因为基础知识并没有掌握。我觉得主要是因为我没有找到适合自己的学习方法,并且因为班级事务老是请假,最重要的是在小组为数不长的学习时间里学习效率还很低。前两周代码只是照着书敲了敲,遇到不会做的练习题也只是上网搜一下答案,然后”复制粘贴“,但对于里面所用到的方法和知识,自己只是一知半解,没有深入研究。还有很重要的一点是,缺乏和组员的沟通交流。在沟通交流的过程中,双方都能得到提升,何乐而不为呢?
在接下来的学习中,要制定一个合理的计划。可以先看一遍书,再看一遍视频,在理解知识的基础上,尝试着自己敲代码。同时,在学习新知识的时候,也不能忘记复习以前的知识。在第一名分享学习经验时,他就说他把前面的知识看了三四遍。为什么同样的时间别人能学习三四遍,而我只能学习一遍呢,是因为学习效率低下。因此,我以后要提高在小组的学习效率,在小组尽量不玩手机,不做与学习无关的事情。学长布置的练习题,也要先自己认真思考,实在想不出来的时候再上网搜,也可以跟身边的组员探讨,说不定一句话就能让我有茅塞顿开的感觉。
总的来说,前一阶段不够努力,接下来要加倍努力才行。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5480369.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存