• 学习笔记60_python面向对象


    ****

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

    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 属性的

      

  • 相关阅读:
    Jquery基础入门-3-jQuery进行Ajax操作的方法
    Jquery基础入门-3-JQuery实现动画与特效
    Jquery基础入门-3-JQuery事件相关介绍
    Jquery基础入门-3-JQuery DOM操作-3、4、5
    Jquery基础入门-3-JQuery DOM操作-1、2
    解决eclipse启动时出现“failed to load the jni shared library”
    Eclipse中servlet简易模版
    Unknown character set: 'utf8mb4'
    Windows下chm转换为html的超简单方法
    MySql学习笔记(一)之DQL常用查询
  • 原文地址:https://www.cnblogs.com/pylblog/p/8244632.html
Copyright © 2020-2023  润新知