【C++基础自学python】(寒假进阶版)面向对象基础

(python的面向对象内容基本和C一样,一个东西,不同语言。要熟悉类,对象,属性(静态),行为(动态)等用语及其概念。)

让我复习一哈:

面向对象程序设计三大基本特征:封装(你用我却无从了解我)、继承(我是你爹)、多态(有共性更有个性)

当时学这个的时候,我们老师说可以类比人类社会,我当时就想,那很多人类社会的现象和问题可以在计算机中找到答案咯。我后来仔细一想,事实上,计算机是人造出来的,在设计它的过程中,自然地联想到了人类社会的情形,并加以运用。计算机与人类社会,是彼此的镜子。

1.定义类

class Students:   #别忘了冒号
    '''学生类'''   #信息。创建类的对象时,输入类名和(,将显示这些信息
    pass          #类体。由于没想好,先写个pass

2.创建类的对象

class Students:   #别忘了冒号
    '''学生类'''   #信息。创建类的对象时,输入类名和(,将显示这些信息
    pass          #类体。由于没想好,先写个pass

onestudent=Students()
print(onestudent)

输出结果
<__main__.Students object at 0x0000026FE93AF910>

Process finished with exit code 0

onestudent是类Students的对象

3._init_()方法  (联想C中的构造函数)

实例化一个对象时,Python会自动执行_init_()方法,该方法必须至少包含一个参数,第一个参数是固定的,通常命名为self,self参数是个指向对象本身的引用,用于访问类中的属性和方法。def  _init_(self):

class Students:   #别忘了冒号
    '''学生类'''   #信息。创建类的对象时,输入类名和(,将显示这些信息
    def _init_(self):
        print("I am a student!")

onestudent=Students()
onestudent._init_()

输出结果
I am a student!

Process finished with exit code 0

在pycharm上运行时发现的事

def后面加个空格再写_init_(self)

对象不要写self,类当中要写

多个参数的试
class Students:   #别忘了冒号
    '''学生类'''   #信息。创建类的对象时,输入类名和(,将显示这些信息
    def _init_(self,intro):
        print("I am a student!")
        print(intro)

intro_1="tall"
intro_2="short"
onestudent=Students()
onestudent._init_(intro_1)
anostudent=Students()
anostudent._init_(intro_2)

输出结果
I am a student!
tall
I am a student!
short

Process finished with exit code 0

使用函数的时候代入参数即可,pycharm貌似不允许我在实例化对象时把参数写进去,就是不能这样写——onestudent=Students(self,intro_1)。

这和书上写的不同,害我摸索半天,不知道其它环境里是什么情况。

4.创建其它方法

hh一直习惯把它叫做函数,很少叫方法。

class Students:   #别忘了冒号
    '''学生类'''   #信息。创建类的对象时,输入类名和(,将显示这些信息
    def _init_(self,intro):
        print("I am a student!")
        print(intro)
    def greet(self,intro):
        print("Hello,I am "+intro+".")

intro_1="tall"
intro_2="short"
onestudent=Students()
onestudent.greet(intro_1)
anostudent=Students()
anostudent.greet(intro_2)

输出结果
Hello,I am tall.
Hello,I am short.

Process finished with exit code 0

5.属性(数据成员)

有两种属性,一种是类属性,一种是实例(成员)属性

①类属性

类属性可以通过 类名称 或 实例名 访问

class Students:   #别忘了冒号
    '''学生类'''   #信息。创建类的对象时,输入类名和(,将显示这些信息
    num=0
    def _init_(self,intro):
        Students.num+=1
        print("I am a student!My number is "+str(Students.num))
intro_1="tall"
intro_2="short"
onestudent=Students()
onestudent._init_(intro_1)
anostudent=Students()
anostudent._init_(intro_2)

输出结果
I am a student!My number is 1
I am a student!My number is 2

Process finished with exit code 0

可动态改变类属性,且会影响所有对象。

可动态添加类属性

class Students:   #别忘了冒号
    '''学生类'''   #信息。创建类的对象时,输入类名和(,将显示这些信息
    num=0
    def _init_(self,intro):
        Students.num+=1
        print("I am a student!My number is "+str(Students.num))
intro_1="tall"
onestudent=Students()
onestudent._init_(intro_1)
Students.farewell="拜拜"
print(onestudent.farewell)

输出结果
I am a student!My number is 1
拜拜

Process finished with exit code 0

②实例(对象)属性

睡觉了,明儿见。


我来了。

该属性只作用于特定实例(对象)。这样就能让每个实例(对象)有所不同了。

例子

class Students:   #别忘了冒号
    '''学生类'''   #信息。创建类的对象时,输入类名和(,将显示这些信息
    def _init_(self):
        self.num
        print("I am a student!My number is "+str(self.num))
onestudent=Students()
anostudent=Students()
onestudent.num=1
anostudent.num=2
onestudent._init_()
anostudent._init_()
print(onestudent.num)

输出结果:
I am a student!My number is 1
I am a student!My number is 2
1

Process finished with exit code 0

然后我想给num初始化,出现了如下情景 

class Students:   #别忘了冒号
    '''学生类'''   #信息。创建类的对象时,输入类名和(,将显示这些信息
    def _init_(self):
        self.num=0
        print("I am a student!My number is "+str(self.num))
onestudent=Students()
anostudent=Students()
onestudent.num=1
anostudent.num=2
onestudent._init_()
anostudent._init_()
print(onestudent.num)

输出结果
I am a student!My number is 0
I am a student!My number is 0
0

Process finished with exit code 0

摸索之后发现,在_init_()体外写的话就可以

class Students:   #别忘了冒号
    '''学生类'''   #信息。创建类的对象时,输入类名和(,将显示这些信息
    def _init_(self):
        print("I am a student!My number is ")
    num=0
onestudent=Students()
anostudent=Students()
onestudent.num=1
anostudent.num=2
onestudent._init_()
anostudent._init_()
print(onestudent.num)

输出结果
I am a student!My number is 
I am a student!My number is 
1

Process finished with exit code 0

6.访问限制

保护类型:(名字前加单下划线)_name

私有类型:(名字前加双下划线)__height

class Students:   #别忘了冒号
    '''学生类'''   #信息。创建类的对象时,输入类名和(,将显示这些信息
    def _init_(self):
        print("I am a student!My number is ")
    __num=0
onestudent=Students()
anostudent=Students()
onestudent.__num=1
anostudent.__num=2
onestudent._init_()
anostudent._init_()
print(onestudent.__num)

输出结果
I am a student!My number is 
I am a student!My number is 
1

Process finished with exit code 0

emm为啥不报错,因为编译器太包容了? 

基本完结,撒花。

发现有些地方和书上不一样,看来要在电脑上自己写,不能只看书。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值