博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
py 的 第 23 天
阅读量:5735 次
发布时间:2019-06-18

本文共 2605 字,大约阅读时间需要 8 分钟。

今天是面向对象第二天  

昨天主要讲的

封装   继承    多态

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

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

就是在继承里有个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()

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

准则 字段和方法的归类,

 

转载于:https://www.cnblogs.com/Mrszhao/p/9550518.html

你可能感兴趣的文章
分享一段ios数据库代码,包括对表的创建、升级、增删查改
查看>>
如何书写高质量的jQuery代码
查看>>
Activity的生命周期整理
查看>>
【记录】JS toUpperCase toLowerCase 大写字母/小写字母转换
查看>>
在 Linux 系统中安装Load Generator ,并在windows 调用
查看>>
Visifire charts ToolBar
查看>>
Mysql查询
查看>>
数据传输流程和socket简单操作
查看>>
利用广播实现ip拨号——示例
查看>>
ProbS CF matlab源代码(二分系统)(原创作品,转载注明出处,谢谢!)
查看>>
OC中KVC的注意点
查看>>
JQ入门(至回调函数)
查看>>
1112: 零起点学算法19——输出特殊值
查看>>
【洛天依】几首歌的翻唱(无伴奏)
查看>>
strcspn
查看>>
OpenSSL初瞻及本系列的博文的缘由
查看>>
ISO8583接口的详细资料
查看>>
tmux不自动加载配置文件.tmux.conf
查看>>
经验分享:JavaScript小技巧
查看>>
[MOSEK] Stupid things when using mosek
查看>>