- 方法:
普通方法:由对象条用;至少一个self参数;执行普通方法是,自动将条用该方法的对象赋值给self;
类方法:由类调用;至少一个cls参数;执行类方法时,自动将调用该方法的类赋值给cls;
静态方法:由类调用;无默认参数;
静态方法是类中的函数,不需要实例。静态方法主要是用来存放逻辑性代码,主要是一些逻辑属于类,但是和类本省没有交互,即在静态方法中,不会涉及到类中的方法和属性的操作。可以理解为将静态方法存在此类的名称空间中。
class Foo:
def __init__(self, name):
self.name = name
def ord_func(self):
""" 定义普通方法,至少有一个self参数 """
# print self.name
print('普通方法')
@classmethod
def class_func(cls):
""" 定义类方法,至少有一个cls参数 """
print('类方法')
@staticmethod
def static_func():
""" 定义静态方法 ,无默认参数"""
print('静态方法')
# 调用普通方法
f = Foo()
f.ord_func()
# 调用类方法
Foo.class_func()
# 调用静态方法
Foo.static_func()
变量:
a、全局变量:在模块内、在所有函数外面、在class外面,这就是全局变量。
b、局部变量:在函数内、在class的方法内(未加self修饰的),这就是局部变量
c、 静态变量:在class内的,但不在class的方法内的,这就是静态变量
d、 实例变量:在class的方法内的,用self修饰的变量,这就是实例变量
quanjubianliang = "HelloWorld" #全局变量
class Person(object):
TAG = "Person" #类变量,静态变量
def __init__(self,name):# 局部变量
self.personName = name #personName是实例变量
def printName(self):
group ="BeiJing_" #group是局部变量
print(group +self.personName) # 调用实例变量
if __name__ == '__main__':
p = Person("hanxiaogang")
p.printName()
3.属性
class Foo:
# 定义属性
@property
def prop(self):
print("shuxing")
pass
# ############### 调用 ###############
foo_obj = Foo()
foo_obj.prop #调用属性
公有成员,在任何地方都能访问
私有成员,只有在类的内部才能方法
私有成员和公有成员的定义不同:私有成员命名时,前两个字符是下划线。