python类中的 实例方法 类方法 静态方法 私有变量 私有方法 不完全总结
2018-10-27 01:25
537 查看
实例方法总结
__init__方法是类初始化方法,一旦实例化就给对象赋__init__中的值,self是实例本身,在以下代码self指的是thecity这个对象
# 建立一个类 class city(object): sex='female' # 构造方法 def __init__(self, name, age): self.name = name #name 为私有变量 self.age = age # 实例方法 def yourage(self): print("你的年龄是" + self.age) # 实例方法 def yourcity(self, cityname): print("你的名字是{0},你所在的城市是{1}".format(self.name, cityname)) a = input("请输入你的名字") b = input("请输入你所在的城市") c = input("请输入你的年龄") thecity=city(a,c) # 实例化一个对象thecity thecity.yourcity(b) #通过对象调用实例方法 thecity.yourage() #通过对象调用实例方法
输出
请输入你的名字lily 请输入你所在的城市shanghai 请输入你的年龄18 你的名字是lily,你所在的城市是shanghai 你的年龄是18
类方法总结
通过类调用的是类的变量,不是init初始化的变量,因为init是通过实例化对象调用的初始化的值,下面仔细看name这个变量
# 建立一个类 class city(object): sex='female' name='balala' # 构造方法 def __init__(self, name, age): self.name = name #name 为私有变量 self.age = age # 实例方法 def yourage(self): print("你的年龄是" + self.age) # 实例方法 def yourcity(self, cityname): print("你的名字是{0},你所在的城市是{1}".format(self.name, cityname)) # 类方法 cls表示city这个类 cls.name 的name是这个类里面的name变量和init中的name无关 所以用类访问的name是lily 实例访问的name是lily @classmethod def sexy(cls): return cls.sex, cls.name a = input("请输入你的名字") b = input("请输入你所在的城市") c = input("请输入你的年龄") # 实例方法的调用 thecity=city(a,c) # 实例化一个对象thecity thecity.yourcity(b) #通过对象调用实例方法 thecity.yourage() #通过对象调用实例方法 print(thecity.name) #通过对象调用实例变量 print(city.sex) #通过对象调用实例变量 # 类方法的调用 print(thecity.sexy()) #通过对象调用类方法 print(city.sexy()) #通过类调用类方法
输出
请输入你的名字lily 请输入你所在的城市shanghai 请输入你的年龄18 你的名字是lily,你所在的城市是shanghai 你的年龄是18lily female('female', 'balala') ('female', 'balala')
静态方法总结
静态方法,通过类直接调用,不需要创建对象,不会隐式传递self
class city(object): sex='female' # 静态方法,通过类直接调用,不需要创建对象,不会隐式传递self @staticmethod #@是方法装饰器,用来约束方法的 def sexy2(): return city.sex #直接用在方法中用类名调用变量 print(city.sexy2()) # 通过类调用静态方法
输出
female
静态方法向前缩进一下,就可以做普通方法用,仔细看缩进
class city(object): sex = 'female' def sexy2(): return city.sex print(sexy2())
输出
female
私有变量总结
私有变量只好在类里面调用,一般不在外部调用,也可以硬来调用例如print(thecity._city__name)
就是(实例._类名__私有变量),所以不访问私有变量全靠程序员自觉,不介意调用,这样破坏结构,仔细看name
class city(object): name = 'balala' # 构造方法 def __init__(self, name): self.__name = name # name 为私有变量 def yourcity(self, cityname): print("你的名字是{0},你所在的城市是{1}".format(self.name, cityname)) a = input("请输入你的名字") b = input("请输入你所在的城市") thecity = city(a) # 实例化一个对象thecity thecity.yourcity(b) # 通过对象调用实例方法 print(thecity.name) # 通过对象调用实例变量 print(thecity._city__name) # 通过对象调用私有变量也是可以的,but一般不会调用私有变量,python没有真正意义的封装,一切靠自律,骚不骚气
输出
请输入你的名字lily 请输入你所在的城市shanghai 你的名字是balala,你所在的城市是shanghai balala lily
私有方法总结
和私有变量一样,私有方法只好在类中调用,也有破坏结构的在外部调用私有方法,类似私有变量,一般不建议
class city(object): sex='female' name='balala' # 构造方法 def __init__(self, name, age): self.name = name #name 为私有变量 self.age = age # 实例方法 def __yourage(self): print("你的年龄是" + self.age) # 实例方法 def yourcity(self, cityname): print("你的名字是{0},你所在的城市是{1}".format(self.name, cityname)) self.__yourage() #内部访问私有方法 a = input("请输入你的名字") b = input("请输入你所在的城市") c = input("请输入你的年龄") # 实例方法的调用 thecity=city(a,c) # 实例化一个对象thecity thecity.yourcity(b) #通过对象调用实例方法 print('-----------------------------------------------------') thecity._city__yourage() #通过对象调用实例方法
输出
请输入你的名字lily 请输入你所在的城市shanghai 请输入你的年龄18 你的名字是lily,你所在的城市是shanghai 你的年龄是18----------------------------------------------------- 你的年龄是18
总结
类中的类方法和静态方法才可以直接用类调用方法,实例方法用实例调用方法,用init初始化,私有变量私有方法只能在类中调用,也有粗暴外部调用,不建议这么做!
相关文章推荐
- Python的类方法,静态方法,实例方法,类变量,实例变量,静态变量的总结
- python中的实例方法、静态方法、类方法、类变量和实例变量
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法
- Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法
- python中的实例方法、静态方法、类方法、类变量和实例变量
- python基础3--面向对象--类变量、实例变量、类方法、静态方法、实例方法
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- python 类的函数,类方法,静态方法,类变量,实例变量浅析
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- python中的实例方法、静态方法、类方法、类变量和实例变量
- Python:类属性,实例属性,私有属性与静态方法,类方法,实例方法
- python中的实例方法、静态方法、类方法、类变量和实例变量浅析
- python中的实例方法、静态变量,静态方法、类方法、类变量和实例变量
- Python 中特殊变量/方法命名规则说明(特别是私有变量)及使用实例