本文主要学习了Python-Java-Scala中的类的不同方法以及包导入机制的一些内容
一.不同语言中的方法
在Python中的方法
01.实例方法 ---的第一个参数必须是”self
def __init__(self, name, age):
self.name = name
self.age = age
def printInstanceInfo(self):
print "%s is %d years old" %(self.name, self.age)
02.静态方法 -----没有参数限制,既不需要实例参数,也不需要类参数,定义的时候使用@staticmethod装饰器
@staticmethod
def printClassAttr():
print Student.count
print Student.books
03.类方法 -----=以cls作为第一个参数,cls表示类本身,定义时使用@classmethod装饰器。通过cls可以访问类的相关属性
@classmethod
def printClassInfo(cls):
print cls.__name__
print dir(cls)
参数
主要区别在于参数,
静态方法没有参数限制,既不需要实例参数,也不需要类参数
使用
实例方法被绑定到一个实例,只能通过实例进行调用;
但是对于静态方法和类方法,可以通过类名和实例两种方式进行调用。
访问控制
访问控制
Python中没有访问控制的关键字,例如private、protected等等。但是,在Python编码中,有一些约定来进行访问控制。
单下划线”_”
在Python中,通过单下划线”_”来实现模块级别的私有化,一般约定以单下划线”_”开头的变量、函数为模块私有的
双下划线”__”
Java中的类方法
Java 实例方法属于每个对象个体的方法
Java中类变量也叫静态变量,也就是在变量前加了static 的变量
调用--import
类名.静态方法名
new一个实例,然后实例调用方法
继承的方法--直接调用
模块名.函数名()
scala--中的类
import a_trait
extends a_trait--直接用
apply---不用new一个对象,在构造样本类的对象时,可以略去new关键字,言简意赅,提高了代码的表达力。
package object--对于包对象,import之后直接用
包对象可以持有函数和变量-- 引入语句可以出现在任何位置,不限于文件顶部
scala import引入语句可以引入包、类和对象
引入包._
包下的样例类直接调用,样例类--样例类有参数
import org.apache.spark.sql.execution.command._
DescribeFunctionCommand(functionName, EXTENDED != null)
二.管理大型程序中的名称--包
Java的包管理
包管理机制-
分层管理
不同的包
同一个包,不同的主类中
同一个主类,不同的的类,接口
一个类中-----------------------内部类
复用类--类的调用
利用现有类型生成新的类型--代码复用机制
组合--
继承--
实现--
组合
首先:import
其次:
继承
extends
实现
implements
一个java主类中引用另一个类的方法
类--静态类
类说明--静态变量和静态方法都属于静态对象
静态变量的使用--static
import 类 <不同包或者类>
直接用 类名.静态方法名 或者 类名.静态变量名就可引用
不用使用new一个实例,然后实例调用方法或者变量
域
方法
Scala的包管理
<1>
- Scala的单例对象Scala不能定义静态成员,而是代之定义单例对象(singleton object)。以object关键字定义
包可以包含类、对象和特质,但不能包含函数或变量的定义。
很不幸,这是Java虚拟机的局限。把工具函数或常量添加到包而不是某个Utils对象,这是更加合理的做法。
包对象的出现正是为了解决这个局限。每个包都可以有一个包对象。你需要在父包中定义它,且名称与子包一样
Python模块及包的导入
Python的包管理
包下载 pip install
导入:
from + import来导入包中的部分模块
整体模块导入
包导入
import 语句导入的模块共有以下四类:
•使用Python写的程序( .py文件)
•C或C++扩展(已编译为共享库或DLL文件)
•包(包含多个模块)
•内建模块(使用C编写并已链接到Python解释器内)
Python的包搜索路径
Python会在以下路径中搜索它想要寻找的模块:
1. 程序所在的文件夹
2. 标准库的安装路径
3. 操作系统环境变量PYTHONPATH所包含的路径
参考: python模块及包的导入 http://blog.csdn.net/zyz511919766/article/details/22678143
参考:
Scala学习(七)---包和引入 http://www.cnblogs.com/sunddenly/p/4436897.html
Scala样本类 http://www.jianshu.com/p/c374599ed0c4