• py 的 第 23 天


    今天是面向对象第二天  

    昨天主要讲的

    封装   继承    多态

    封装就是  归类,归类将函数放置到一个类中 打包,将数据打包放到一个对象。

     继承没什么说的,先找自己的,在从左往右找

    就是在继承里有个self 的事

        self参数是py帮助我们自动传递。

        如果执行面线对象中的方法时,前面必须有一个对象:xxx。函数名()

    还有一个小技能  归类+提取公共值

    多态,py原生支持多态,崇尚鸭子模型,由于py函数传参时,无序指定类型:

    def  func(a) a可以时多种类型,只要其中有send方法即可。

    a。send()

    py支持 多继承

    第二天,1成员     2,嵌套(建模)

    1,类的成员

        class foo:

            方法

            def __init__(self,name):

              实例变量/字段

              self.name=name

            方法

            def func(self):

                pass

    obj。foo类的对象

    obj。foo类的实例

    obj=foo(‘aaa’)

    成员分为3类:

        变量:

            实例变量(字段)

                公有实例变量(字段)

                私有实例变量(字段)

            类变量(静态字段)

                公有类变量(静态字段)

                私有类变量(静态字段)

                class  foo:

                    类变量(静态字段)

                    country=‘a’

                    def  __init__(self,name):

                        实例变量(字段)

                        self。name=name

                    def func(self):

                        pass

                obj1=foo(‘a’)

                  obj2=foo(‘b’)

                foo。country

    方法 

         实例方法

            class  foo(xx):

                def __init__(self,name):

                    self.name=name

                实例方法

                def func(self):

                  print(self.name)

            obj=xx(‘aa’)

            obj。func()

       静态方法

            class  foo(xx):

                def__init__(self,name):

                  self。name=name

              静态方法,如果方法无需使用对象中封装的值,那么就可以使用静态方法

                @staticmethod

                def display(a1,a2):

                  return     a1+a2

            foo。display(1,3)

      类方法              这两个@后的单词是固定的

            class  foo(object):

                类方法,cls是类

                @  classmethod

                def show(cls,x1,x2):

                    print(cls,x1,x2)         <class '__main__.Foo'>   cls打印出这个

            执行类方法

            foo。show(1,8)

    属性(通过方法改造出来):

    总结:

      1.编写时

          -方法上方写@property

          -方法参数:只有一个self

      2.调用时:无需加括号   对象。方法    这个和staticmethod一样,只是这个能传值,property不能

      3.引用场景。对于简单的方法,当无需传参且有返回值时,可以使用@property

    嵌套  

        面向对象

            class school (obj)

    def __init__(self, name, address):
    self.name = name
    self.address = address

    def speech(self):
    print('讲课')

    obj1 = School('老男孩北京校区', '美丽富饶的沙河')
    obj2 = School('老男孩上海校区', '浦东新区')
    obj3 = School('老男孩深圳校区', '南山区')
    class Teacher(object):
    def __init__(self, name, age, salary):
    self.name = name
    self.age = age
    self.__salary = salary
    self.school = None

    t1 = Teacher('李杰', 19, 188888)
    t2 = Teacher('艳涛', 18, 60)
    t3 = Teacher('女神',16, 900000)
    # ############## 老师分配校区
    t1.school = obj1
    t2.school = obj1
    t3.school = obj2
    # ####################################
    # 查看t1老师,所在的校区名称/地址
    print(t1.school.name)
    print(t1.school.address)
    print(t1.name)
    print(t1.age)
    t1.school.speech()

    这个就是互相调用,好绕,感觉会用的多

    准则 字段和方法的归类,

  • 相关阅读:
    myEclipse,web项目连接数据库
    jquery模拟手机短信发送
    myEclipse创建web项目及运行
    总结SUMMARY
    pthread
    NSThread线程对象
    刀哥多线程自动释放池autoreleasepool
    仿SDWebImage
    多线程基本概论multithread
    多线程异步加载图片async_pictures
  • 原文地址:https://www.cnblogs.com/Mrszhao/p/9550518.html
Copyright © 2020-2023  润新知