python的弱作用域体现

# coding=utf-8

import logging

''' 类定义,class,python在同于个文件内的代码顺序很强,要求父类先定义在子类之前文本;
    python中在同一个方法内定义的变量在整个方法内都可以见,作用域较广;属于弱作用域。'''

class people:
    # 定义基本属性,类变量
    name = '' #Public 类型属性
    age = 0   #Public 类型属性
    _salary=100000 #protected属性,只能子类和父类访问,子类可以访问
    __weight = 0   # private 定义私有属性,私有属性在类外部无法直接进行访问,子类也不能访问


    # 定义构造方法
    def __init__(self, n, a, s, w):
        self.name = n  #类变量初始化
        self.age = a   #类变量初始化
        self._salary = s  #类变量初始化,子类可以访问
        self.__weight = w #类变量初始化,子类也不能访问
        self.high = 175   #构造方法内额外声明成员变量,并初始化
        self.fun(6)            #构造函数内调用函数

    def fun(self,val = 4):   #带默认参数的普通函数
        self.english_level = val #在构造函数内调用普通函数初始化的成员变量


    def _dance(self): #protected的函数,子类可以访问
        print('dance%' (self.name, self.age))

    def __sing(self): #private的函数,子类也不能访问
        print('唱歌-----')

    def memfuntion1(self, val=400):  #带默认参数的普通函数
        localval3 = 300  # 函数内部的局部变量
        self.nmval4 = val #非成员变量,因为没有在构造函数内调用改函数
        self.nmval5 = 500 #非成员变量,因为没有在构造函数内调用改函数

    def speak(self):
        print("%s 说: 我 %d 岁。" % (self.name, self.age))


''' 单继承示例;如果是多继承,可以在括号内写多个父类'''
class student(people):
    grade = '' #子类特有属性

    def __init__(self, n, a, s, w, g):
        # 首先需要调用父类的构函
        people.__init__(self, n, a, s, w)
        self.grade = g  #子类特有属性初始化

    # 覆写父类的方法
    def speak(self):
        print("%s 说: 我 %d 岁了,我在读 %d 年级" % (self.name, self.age, self.grade))



class person(people):
    grade = ''  # 子类特有属性

    def __init__(self,s):
        self.grade = s

    def speakf(self):
        print("%s 说: 我 %d 岁了,我在读 %d 年级" % (self.name, self.age, self.grade))

    def fun():  #弱作用域体现
        for a in arange(5):
            m = "hello"
            if m == "hello":
                if a == 1:
                    s7 = {1, 2, 3, 5}
        print(m)   #这里可以输出m变量
        return s7  #这里可以返回s7变量


if __name__ == '__main__':
     s = student('ken', 10, 60,100000, 3)
     s.speak()
     s = person("sssssss")
     print(s)
     b = people("dfb", 2, 3, 5)
     print(b)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值