zoukankan      html  css  js  c++  java
  • python 面向对象(成员)

    python 面向对象:

    (思维导图 ↑↑↑↑)

    类的成员:

      成员分为三类:

        变量:

          - 实例变量(字段)

            -公有实例变量(字段)

            -私有实例变量(字段)

          - 类变量(静态字段)

            -公有类变量(静态字段)

            -私有类变量(静态字段)

    实例一:

    class Foo:
        # 类变量(静态字段)
        country = "中国"
    
        def __init__(self, name):
            # 实例变量(字段)
            self.name = name
    
        def func(self):
            pass
    
    
    obj1 = Foo('裴杰')
    obj2 = Foo('裴狗子')
    
    print(Foo.country)
    准则:
    实例变量(字段)访问时,使用对象访问,即: obj1.name
    类变量(静态字段)访问时,使用类方法,即: Foo.country (实在不方便时,才使用对象)
    练习1
    obj1.name = 'alex'
    print(obj1.name) # alex
    print(obj2.name) # 裴狗子
    
    练习2
    obj1.country = '美国'
    print(obj1.country) # 美国
    print(obj2.country) # 中国
    
    练习3
    Foo.country = '美国'
    print(obj1.country) # 美国
    print(obj2.country) # 美国
      方法:
        - 实例方法
          
    class Foo(object):
        def __init__(self, name):
            self.name = name
    
        # 实例方法
        def func(self):
            print(self.name)
    
    
    obj = Foo('..')
    obj.func()
         - 静态方法
    class Foo(object):
        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)
    
        # 执行类方法
    
    
    Foo.show(1, 8)
       属性(通过方法改造出来)
        示例:
    class Foo(object):
        def __init__(self):
            pass
    
        @property
        def start(self):
            return 1
    
        @property
        def end(self):
            return 10
    
    obj = Foo()
    print(obj.start)
    print(obj.end)
    总结:
    1. 编写时
    - 方法上方写 @property
    - 方法参数:只有一个self
    2. 调用时:无需加括号 对象.方法
    3. 应用场景: 对于简单的方法,当无需传参且有返回值时,可以使用 @property
    组合(建模)
        面向对象: 
    class School(object):
        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()
    
    
    
     
  • 相关阅读:
    js 创建Table,每行3列的方式
    多线程 笔记
    WCF binding
    table 变量
    Excel数据使用sql语句导入sqlserver (64位)
    sqlserver链接服务器到Mysql
    easyui datagrid 返回数据正确 fit='true' 时不显示内容
    js设置文本框只读属性的小bug
    windows64位下的redis及memcached的安装和使用
    spring.Net (Mvc)属性依赖注入------实例化对象
  • 原文地址:https://www.cnblogs.com/zbw582922417/p/9548656.html
Copyright © 2011-2022 走看看