前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python:面向对象的基本知识

python:面向对象的基本知识

作者头像
py3study
发布2020-01-05 15:28:39
3610
发布2020-01-05 15:28:39
举报
文章被收录于专栏:python3python3

面向对象:

代码语言:javascript
复制
#类是现实世界或思维世界的实体在计算机中的反映
#它将数据以及这些数据上的操作封装在一起

# 属性-特征 
    
# 方法(函数)-行为
    # 构造函数-__init__() 初始化类的特征
    构造函数是自动被调用的,也可显式调用,但不能定义return值,只能返回None(一般不用)
    作用:初始化类的特征值,让对象之间变的不同

1 类命名

代码语言:javascript
复制
# 首字母大写;单词之间大写连接

2 构造函数(特殊的实例方法)

代码语言:javascript
复制
# 2.1 默认被调用;亦可被主动调用
# 2.2 只能返回None,它不是用来返回值的
# 2.3 作用:让模板创建不同的对象,初始化对象的特性

3 属性

代码语言:javascript
复制
# 类变量(用'='号赋值!!!) :Students.sum 
    #规范:通过方法修改类变量
    # self.__class__.变量 访问类变量
# 实例变量
    # self.变量 定义实例变量
# __dict__ 内置函数(同__all__,定义import*的范围):对象下所有变量的字典
    # dict需在实例中调用,在类中不准确。

4 方法

代码语言:javascript
复制
# 4.1 实例方法
    # self 显胜于隐 相当于this,只和实例对象有关,和类无关
        #访问实例变量,要加self
    # 访问类变量 __class__ 指定的类 Student
    # 不要操作与对象无关的变量,请用类方法
    
# 4.2 类方法 @classmethod装饰器
    # 在函数前加上一个@classmethod 将self改成cls
    # 避免逻辑错乱,不要用对象调用类方法
    # 可以访问类变量 cls.sum(实例方法:self.__class__.变量 )
    # 调用:类.类方法() (不建议用对象调用类方法,不合逻辑)
    
# 4.3 静态方法 @staticmethod,不推荐用此方法
    # 在函数前加上一个@staticmethod
    # 可以同时被 对象、类 调用
    # 可以访问类变量 Student.sum,和变量关联性不大的方法时用

5 成员的可见性

代码语言:javascript
复制
# 只允许内部的方法操作变量,避免直接修改数据变量
# __ 前面加 双下划线 变量变成私有

6 继承性

代码语言:javascript
复制
# 建议一个类单独成一个文件
# super 指代父类 Python3.x 和 2.x 的一个区别是:3 可以使用直接使用 super().xxx 代替 super(Class, self).xxx
# 子类调用父类 属性、方法 时,优先使用super()

案例:

代码语言:javascript
复制
class Student():
    sum=0
    def __init__(self,name1,age):
        self.name=name1
        self.age=age
        self.__score=0
        print(self.name)
        
        #在实例方法中不要操作与对象无关的变量,请用类方法
        #self.__class__.sum+=1
        #print((self.__class__.sum))
        #2.2 return '只能返回None'
    
    @classmethod
    def plus_sum(cls):
        cls.sum+=1
        print('我们班有:',cls.sum)
        
    @staticmethod
    def add(x,y):
        print('This is a static method')
    def do_homework(self):
        print('写作业')
        
    def marking(self,score):
        self.__score=score
        print(self.name+'同学本次成绩是'+str(self.__score))

class people
#实例化
s1=Student('石敢当',20)
r1=s1.marking(98)

Student.plus_sum()
s1=Student('石当2',22)
Student.plus_sum()

#2.1 很少调用构造函数,只是证明可用
#a=s1.__init__()
# print(a)
# print(type(a))

#print(s1.name)
#print(s1.__dict__)
#print(Student.__dict__)

s1.do_homework()
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-10-08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 面向对象:
  • 1 类命名
  • 2 构造函数(特殊的实例方法)
  • 3 属性
  • 4 方法
  • 5 成员的可见性
  • 6 继承性
  • 案例:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档