python基础-命名空间、类_对象调用范围、对象组合
2017-11-20 16:44
615 查看
面向对象的命名空间
可变不可变类型
类对象调用方法的示例
_dict_
不能使用global
类获取对象属性
对象组合
2、对象名操作静态变量
2_1引用变量:在自己的命名空间中查找,找不到就去类的命名空间找
3、修改变量:
3_1如果是对可变数据类型中的元素进行修改,那么全局生效
3_2如果是对变量进行重新赋值,那么只是在对象自己的命名空间里增加了一个新的属性
结论:应该尽量用类名去使用静态变量
输出如下:
输出如下:
输出如下:
输出如下:
我做了几个测试,是无法使用global的
输出如下:
输出如下:
可变不可变类型
类对象调用方法的示例
_dict_
不能使用global
类获取对象属性
对象组合
面向对象的命名空间
1、类名操作可变、不可变数据类型,都是类中对应的变量发生变化2、对象名操作静态变量
2_1引用变量:在自己的命名空间中查找,找不到就去类的命名空间找
3、修改变量:
3_1如果是对可变数据类型中的元素进行修改,那么全局生效
3_2如果是对变量进行重新赋值,那么只是在对象自己的命名空间里增加了一个新的属性
结论:应该尽量用类名去使用静态变量
class Foo: country = 'China' country_lst = ['China'] def __init__(self,name): self.name = name egg = Foo('egon') safly = Foo('safly') print(safly.country,safly.country_lst) safly.age = 90 safly.country_lst = [] safly.country_lst.append('印度') print(safly.age,safly.country,safly.country_lst) print(Foo.country,Foo.country_lst) print(egg.country,egg.country_lst)
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/3.面向对象的命名空间.py China ['China'] 90 China ['印度'] China ['China'] China ['China'] Process finished with exit code 0
可变、不可变类型
class Foo: country = 'China' country_lst = ['China'] def __init__(self,name,country): self.name = name self.country = country alex = Foo('alexander',"印度") print(alex.country) #删除对象属性,会查询类属性 del alex.country print(alex.country) print(alex.country_lst) alex.country_lst.append('印度') print(alex.country_lst) egg = Foo('alexander',"印度") print(egg.country_lst) print(Foo.country_lst)
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/3.面向对象的命名空间.py 印度 China ['China'] ['China', '印度'] ['China', '印度'] ['China', '印度'] Process finished with exit code 0
类、对象调用方法的示例
def method(): print("out method") class Animal(): name = "animal" method = method def method1(self, a): print("method1",a) def method2(a): print("method2", a) a = Animal() print(a.method1(1)) print("--------") #如下方式不行 # a.method() #如下方式也不行 # a.method2(2) #如下可以调用类外函数 Animal.method() print("--------") Animal.method2(111) print("--------") Animal.method1(Animal,333) print("--------") Animal.method1(a,333)
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/python.py method1 1 None -------- out method -------- method2 111 -------- method1 333 -------- method1 333 Process finished with exit code 0
_dict_
init方法可以不写#init可以不写 class Person: def eat(self): pass alex = Person() alex.eat() print(alex.__dict__)
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/python.py {} Process finished with exit code 0
不能使用global
我做了几个测试,是无法使用global的
类获取对象属性
#Person不能直接获取对象属性 #但是可以通过方法间接获取 class Person: name = "saf" def __init__(self,name): self.name = name #获取对象属性 def getName(self): return self.name p1 = Person("safly1") #获取对象属性 print(Person.getName(p1))
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/python.py safly1 Process finished with exit code 0
对象组合
一个对象的属性是另外一个类的对象class Teacher: def __init__(self,name,age,sex,year,month,day): self.name = name self.age = age self.sex = sex self.birth = Birthday(year,month,day) class Birthday: def __init__(self,year,month,day): self.year = year self.month = month self.day = day boss_gold = Teacher('太亮',40,'不详',1968,12,31) print(boss_gold.birth.year) print(boss_gold.birth.month) print(boss_gold.birth.day)
输出如下:
E:\python\python_sdk\python.exe E:/python/py_pro/4.组合.py 1968 12 31 Process finished with exit code 0
相关文章推荐
- Python开发基础-Day6-函数参数、嵌套、返回值、对象、命名空间和作用域
- python基础之函数参数、嵌套、返回值、对象、命名空间和作用域
- python面向对象之类的命名空间与组合
- C#基础知识C#中的类是利用命名空间组织起来的。命名空间提供了一种从逻辑上组织类的方式,防止命名冲突。 命名空间声明 用namespace 关键字用于声明一个命名空间。此命名空间范围允
- python基础之类的继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法
- python基础6之命名空间与作用域
- 【laravel5.4】PHP5.6+ 调用命名空间下类方法、属性和对象
- Python3.X基础语法(数据类型/对象引用/组合数据类型/逻辑操作符/控制流语句/算数操作符/输入输出/函数创建和引用)001
- python基础之类和对象、对象之间的交互、类名称空间与对象/实例名称空间
- python基础之命名空间
- Python基础-作用域和命名空间(Scope and Namespace)
- python基础----继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法
- 基础复习------命名空间导入及访问类对象方法
- python基础之继承组合应用、对象序列化和反序列化,选课系统综合示例
- PHP基础----面向对象相关特性----10类和命名空间介绍
- J2SE基础:3.对象的创建与使用类的命名空间和访问权限
- c#面向对象基础 静态成员、构造函数、命名空间与类库
- 2015/10/9 Python基础(21):可调用和可执行对象
- 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用
- struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用