****

//可以给函数参数设置默认值

def stu_register(name,age,course,country="CN"):

若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数

,例如:def stu_register(name,age,*args):  ,这个*args就相当于c#中的 param [] class1  args 这样子

//类的创建

class ClassName

  '''

   注意,属性可以在__init__中,直接定义

  '''

  PropertyName = value #可以这样来定义类的属性,相当于c#中的类的静态属性,属于类而不属于对象,使用 " 类名.属性"来调用,又叫"公有变量"

  def __init__(self,Name,age):

    #这里是属于对象的属性

    self.Name = 'aaaaa'

    self.age =11

    函数体

  def hellow(self):

    #'''要在其他成员方法中使用self,也要这样'''

    print("my name is %s" ,self.Name)

  @property #定义只读属性,可以使用  a = instance.fullnfo #不需要a =instacne.fullinfo(),原理是,修饰器将 fullinfo  从一个指向方法的变量,替换成一个执行结果

  def fullInfo(self):

    return self.Name + self.age

  @classmethod #定义类方法,只能访问类变量,而不能访问实例变量,例如这里,只能访问 self.Name,不能访问self.PropertyName

  def Show(self):

    #todo

  @staticmethod #定义静态方法,这里原本hellow的调用,可以 instance.hellow()即可,不用传参,而这里,要变成 instance.hellow2(instance),或者 ClassName.hellow2(instance)

  def hellow2(self):

    print("my name is %s" ,self.Name)

  @fullInfo.setter #定义可改属性,使用的时候,直接  instance.fullinfo = "aaa"

   def fullinfo(self,Name)

   self.Name=Name

  @fullinfo.deleter,使用的时候,就可以 del instance.fullinfo ,那么就会调用这里的代码了

   def fullinfo(self)

   self.isdelete = true;

     def __getitem__(self, key):  #内置函数,相当于C#中的索引器 调用  result = obj['k1']   , 自动触发执行 __getitem__
    print('__getitem__',key)
    
         def __setitem__(self, key, value):   #内置函数,相当于C#中的索引器 调用  obj['k2'= 'alex'  , 自动触发执行 __setitem__
    print('__setitem__',key,value)

def __delitem__(self, key):
    print('__delitem__',key)

//self相当于this的意思

(以上的类属性,相当于c#中的类的静态成员)

类的继承:

**************导入包的两中办法******************

1.全部导入 import 包名   ,一般是文件名,类似于 demo.py,

那么,实例化时,就要    a = new demo.Class()

2.部分导入 from demo import Class1,Class2,仅仅导入Class1和Class2

3.导入所有 from demo inport *,导入所有;

4.导入特殊模块

import os #会默认去默认的路径下去找

******************************************************************************************************************************************

//关于构造函数

class childClass(father1,father2):#可以多重继承

  def__init__(self):

    #自己的构造方法,不会默认调用父类的构造方法,如果想掉,要

    super()#这样子来掉父类的构造方法

******************************************************************************************************************************************

子类直接写方法,如果跟父类方法名一致,就直接覆盖了

******************************************************************************************************************************************

//关于多重继承的构造函数

多重继承的supper():如果 father1继承于father2 (他们都写了构造函数),

child继承与father1和father2,那么father1和father2的构造函数仅仅会被调用一次,而不会  father1调一次fanther2, father2又调一次它自己的。

******************************************************************************************************************************************

//创建类的私有属性

class myclass:

  __privateProperty = "aaaa"  #这个为私有属性,特点是在前面加两个"_",那么就跟C#的私有属性一样了

//

//python是没有 protect 属性的

  

学习笔记60_python面向对象的更多相关文章

  1. UML和模式应用学习笔记-1(面向对象分析和设计)

    UML和模式应用学习笔记-1(面向对象分析和设计) 而只是对情节的记录:此处的用例场景为:游戏者请求掷骰子.系统展示结果:如果骰子的总点数是7,则游戏者赢得游戏,否则为输 (2)定义领域模型:在领域模 ...

  2. Lua学习笔记:面向对象

    Lua学习笔记:面向对象 https://blog.csdn.net/liutianshx2012/article/details/41921077 Lua 中只存在表(Table)这么唯一一种数据结 ...

  3. ASP.NET MVC 学习笔记-7.自定义配置信息 ASP.NET MVC 学习笔记-6.异步控制器 ASP.NET MVC 学习笔记-5.Controller与View的数据传递 ASP.NET MVC 学习笔记-4.ASP.NET MVC中Ajax的应用 ASP.NET MVC 学习笔记-3.面向对象设计原则

    ASP.NET MVC 学习笔记-7.自定义配置信息   ASP.NET程序中的web.config文件中,在appSettings这个配置节中能够保存一些配置,比如, 1 <appSettin ...

  4. Java学习笔记之---面向对象

    Java学习笔记之---面向对象 (一)封装 (1)封装的优点 良好的封装能够减少耦合. 类内部的结构可以自由修改. 可以对成员变量进行更精确的控制. 隐藏信息,实现细节. (2)实现封装的步骤 1. ...

  5. 我的Java学习笔记-Java面向对象

    今天来学习Java的面向对象特性,由于与C#的面向对象类似,不需详细学习 一.Java继承 继承可以使用 extends 和 implements 这两个关键字来实现继承. extends:类的继承是 ...

  6. 《JavaScript高级程序设计》学习笔记(5)——面向对象编程

    欢迎关注本人的微信公众号"前端小填填",专注前端技术的基础和项目开发的学习. 本节内容对应<JavaScript高级程序设计>的第六章内容. 1.面向对象(Object ...

  7. javascript 学习笔记之面向对象编程(一):类的实现

    ~~想是一回事,做是一回事,写出来又是一回事~~一直以来,从事C++更多的是VC++多一些,从面向过程到面向对象的转变,让我对OO的编程思想有些偏爱,将一个客观存在的规律抽象出来总是让人比较兴奋,通过 ...

  8. 【原】Java学习笔记019 - 面向对象

    package cn.temptation; public class Sample01 { public static void main(String[] args) { // 仔细想一想,Ani ...

  9. Java学习笔记--关于面向对象的思考

    1.不可改变的类生成对象以及变量的范围 2. 关键词this的使用 3.用类抽象的思想制作软件 4.通过关系模型建立类 5.使用面向对象的范例来设计程序,遵循类设计指导. 已经学习了:怎么定义类已经创 ...

随机推荐

  1. python 写入txt的新方法

    最新发现有新方法可以对txt等进行操作,比较有意思,之前没见过,故记录下 传统方法 with open(ur'D:\Desktop\a123.txt', 'a') as f: #以写的方式打开 f.w ...

  2. 快学Scala 第六课 (类getter和setter)

    类getter和setter 如果字段定义是private[this], 字段是私有的,但不生成getter和setter方法. class Counter { private[this] var v ...

  3. hihocoder 数论二·Eular质数筛法

    数论二·Eular质数筛法 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:小Hi,上次我学会了如何检测一个数是否是质数.于是我又有了一个新的问题,我如何去快速得 ...

  4. Spring Boot2 系列教程(十二)@ControllerAdvice 的三种使用场景

    严格来说,本文并不算是 Spring Boot 中的知识点,但是很多学过 SpringMVC 的小伙伴,对于 @ControllerAdvice 却并不熟悉,Spring Boot 和 SpringM ...

  5. 深入理解 web 协议(一)- http 包体传输

    本文首发于 vivo互联网技术 微信公众号 链接:https://mp.weixin.qq.com/s/WlT8070LlrnSODFRDwZsUQ作者:吴越 开坑这个系列的原因,主要是在大前端学习的 ...

  6. windows离线安装sublime插件:ctags

    网络上一堆安装ctags教程,可都是在线安装. 花了点时间摸索出了离线安装教程. 1. 准备好sublime 和 package control sublime我用的版本是text 2. text 3 ...

  7. Linux提权中常见命令大全

    在拿到一个 webshell 之后,大家首先会想到去把自己的权限提升到最高,windows 我们会提升到 SYSTEM 权限,而 Linux 我们会提升到 root 权限,拿在进行 Linux 提权的 ...

  8. [JoyOI1519] 博彩游戏

    题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Local 题目背景 Bob最近迷上了一个博彩游戏…… 题目描述 这个游戏的规则是这样的:每花一块钱可以 ...

  9. 使用python进行运动轨迹合并:多次骑行跑步轨迹叠加显示

    现有各种各样的运动app.运动手表手环以及gps码表等可以用于记录日常骑行或跑步等运动轨迹;但轨迹显示多数只限于显示一天的轨迹,经过搜索只发现一篇文章介绍跑步轨迹叠加方法(查看),根据教程尝试了下还因 ...

  10. FileZilla Server超详细配置

    FileZilla Server下载安装完成后,必须启动软件进行设置,由于此软件是英文,本来就是一款陌生的软件,再加上英文(注:本站提供中文版本,请点击下载),配置难度可想而知,站长从网上找到一篇非常 ...