python 类有类方法、实例方法、静态方法、类数据属性(类变量)和实例数据属性(实例变量)。
静态方法: 用 @staticmethod 装饰的不带固定参数的方法叫做静态方法,类的静态方法可以没有参数,可以被类名或对象名调用。
实例方法: 默认有个 self 参数,且只能被对象调用。
类方法: 默认有个 cls 参数,可以被类和对象调用,需要加上 @classmethod 装饰器。
类变量:在类方法外定义的属性。
实例变量:__init__内定义的属性。
类属性:包括类方法和类变量,可以通过类或实例来访问,只能通过类来修改。
实例属性:包括实例方法和实例变量类属性定
义参考示例:
#!/usr/bin/python3
class TestCla:
addr = '江西抚州'
__sex = '男'
def __init__(self,name,age):
self.__name = name
self.age = age
def output(self):
print('name:',self.__name)
print('age:',self.age)
print('addr:', self.addr)
def __outSex(self):
print('sex:', self.__sex)
@classmethod
def class_method(cls):
pass
@staticmethod
def static_method():
pass
a = TestCla('huihui',23)
类定义解析:
1、类名一般约定用大写字母开头,函数则用小写字母开头,以做区分;
2、类属性定义可分两种:1)单独声明为类变量,类似 addr 和 __sex 的定义;2)在 init 函数中直接初始化的为实例变量,类似 __name 和 age ;
3、定义一个私有属性直接定义属性名即可,定义私有属性则在属性名前加双下线,声明公有私有方法同理;
4、python 风格问题:类定义声明跟结束前空2行,方法声明前空1格,也进行忽略:进入 File –>Settings–>Editor–>Inspections–>Python–>PEP 8 naming convention violation ;
在右下角有一个 Ignored errors 列表控件,添加
code sample message
N801 class names should use CapWords convention
N802 function name should be lowercase
N803 argument name should be lowercase
N804 first argument of a classmethod should be named 'cls'
N805 first argument of a method should be named 'self'
N806 variable in function should be lowercase
N811 constant imported as non constant
N812 lowercase imported as non lowercase
N813 camelcase imported as lowercase
N814 camelcase imported as constant