python: objct property

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
"""
clerker.py
edit:geovindu,Geovin Du
date:20230672
IDE:PyCharm 2023.1.2
clerker.__dict__ 窥探私有属性
私用属性
clerker._Clerker.__age=-1
clerker.__age=-1
"""
import sys
import os
 
class Clerker(object):
    """
    类的封装
    """
    salary=30  #定义类的公有属性
    _salary2=20 #定义类的保护属性
    __salary3=50 #定义类的私有属性
 
    def __init__(self,name:str,age:int):
        """
 
        :param name:
        :param age:
        """
        self._name=name #公有属性
        self.__age=age #私用属性,需要通过(函数)setter,getter 设置和访问
 
 
    @property  # @property装饰getter方法  get ,set 名字相符
    def Age(self):
        """
 
        :return:
        """
        return self.__age
 
    @Age.setter
    def Age(self,age):  #@方法名.setter 设置
        """
 
        :param age:
        :return:
        """
        if age>0:
            self.__age=age
 
    def __getage(self):
        """
 
        :return:
        """
        print(f"我是{self._name},今年{self.__age}岁")
        return self.__age
 
 
    def setName(self,name):
        """
 
        :param name:
        :return:
        """
        self._name=name
 
    def getName(self):
        """
 
        :return:
        """
        return self._name
 
    def setAge(self,age):
        """
 
        :param age:
        :return:
        """
        if(age>0):
            self.__age=age
 
    def getAge(self):
        """
 
        :return:
        """
        return self.__age

  

调用:

1
2
3
4
5
6
7
8
9
10
#私有属性也可以处理
cl=Clerker.Clerker("geovindu",25)
print(cl.getAge())
print(cl.__dict__)  #查看属性
print(Clerker.__dict__) #查看方法
cl._Clerker__age=20
print(cl.Age)
print(cl._Clerker__getage())
print(Clerker.Clerker.salary)
print(Clerker.Clerker._salary2)

  

继承

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
"""
Animal.py
edit:geovindu,Geovin Du
date:20230702
IDE:PyCharm 2023.1.2
"""
import sys
import os
 
class Animal(object):
    """
    """
    def __init__(self):
        """
 
        """
        self._Category=""
        self._Color=""
 
    @property
    def Categor(self):
        """
 
        :return:
        """
        return self._Category
 
    @Categor.setter
    def Categor(self,categor):
        """
 
        """
        self._Category=categor
 
    @property
    def Color(self):
        """
 
        :return:
        """
        return self._Color
 
    @Color.setter
    def Color(self,color):
        """
 
        :param color:
        :return:
        """
 
        self._Color=color;
 
    def Eat(self):
        """
 
        :return:
        """
        print(f"{self._Color}的{self._Category}在吃食物")
 
    def Sleeep(self):
        """
 
        :return:
        """
        print(f"{self._Color}的{self._Category}在睡觉")
 
 
"""
Dog.py
继承类 extens
edit:geovindu,Geovin Du
date:20230702
IDE:PyCharm 2023.1.2
"""
import sys
import os
 
import Animal
 
class Dog(Animal.Animal):
    """
 
    """
 
    def wathchDoor(self):
        """
 
        :return:
        """
        print(f"{self.Color}的{self.Categor}在看家门")
 
 
"""
Cat.py
继承类 inherited  Animal
python (类名) super
java 继承可以使用 extends 和 implements 这两个关键字来实现继承
C++ :public 类名
C# :类名
可以重写父类方法
edit:geovindu,Geovin Du
date:20230702
IDE:PyCharm 2023.1.2
"""
import sys
import os
 
import Animal
 
class Cat(Animal.Animal):
    """
 
    """
    def __init__(self):
        self._eye=""  # 自有属性
        super().__init__()
 
 
    @property
    def Eye(self):
        """
 
        :return:
        """
        return self._eye
 
    @Eye.setter
    def Eye(self,eye):
        """
 
        :param eye:
        :return:
        """
        self._eye=eye
 
 
    def Eat(self):
        """
        重写父类的方法,用子类的方法
        :return:
        """
        print(f"{self.Color}的{self.Categor}在吃鱼")
        super().Eat() #再调用父类的方法
 
    def CatchaMouse(self):
        """
 
        :return:
        """
        print(f"{self.Color}的{self.Categor}显矅{self._eye}注视着在老鼠")

  

 调用:

1
2
3
4
5
6
7
8
9
10
11
12
13
dog=Dog.Dog()
dog.Color="黄色"
dog.Categor="狼狗"
dog.Eat()
dog.Sleeep()
dog.wathchDoor()
cat=Cat.Cat()
cat.Categor="白色"
cat.Color="家猫"
cat.Eye="黄眼睛"
cat.Eat()
cat.Sleeep()
cat.CatchaMouse()

  

输出:

1
2
3
4
5
6
7
黄色的狼狗在吃食物
黄色的狼狗在睡觉
黄色的狼狗在看家门
家猫的白色在吃鱼
家猫的白色在吃食物
家猫的白色在睡觉
家猫的白色显矅黄眼睛注视着在老鼠

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
"""
Singleton.py
单例 模式
python (类名) super
java 继承可以使用 extends 和 implements 这两个关键字来实现继承
C++ :public 类名
C# :类名
可以重写父类方法
edit:geovindu,Geovin Du
date:20230702
IDE:PyCharm 2023.1.2
"""
 
import sys
import os
 
class Singleton(object):
    """
    单例  __new__ 只让它创建一次
    """
    __instance=None  #类属性
 
    def __init__(self):
        super().__init__()
        self.name=""
 
    def __new__(cls, *args, **kwargs):
        if not cls.__instance:
            cls.__instance=super().__new__(cls,*args, **kwargs)
        #print(f"22222")
        return cls.__instance
        #return super().__new__(cls,*args, **kwargs)

  

调用:

1
2
3
4
5
sin=Singleton.Singleton()
sin.name="geovindu"
print(id(sin))
sin.name="涂聚文"
print(id(sin))

  

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# encoding: utf-8
# Author    : geovindu,Geovin Du 涂聚文.
# IDE       : PyCharm 2023.1 python 11
# Datetime  : 2023/7/2 19:35
# User      : geovindu
# Product   : PyCharm
# Project   : pythonStudyDemo
# File      : duShapes.py
# explain   : 学习  radial (公有属性)  _radial (保护属性)  __radial (私有属性) 下划线的条数确定私有公有性不同
 
import sys
import os
import math
 
class DuShapes(object):
    """
 
    """
    price = 10 #定义类的公有属性
    _price = 100 #定义类的保护属性
    __pirce = 1000 #定义类的私有属性
 
    def __init__(self):
        """
 
        """
        self.radial = 0  #公有属性
        self._radial=0   #保护属性
        self.__radial=0  #私有属性
 
    @property
    def Radial(self):
        return self.radial
 
    @Radial.setter
    def Radial(self, radial):
        if (radial > 0):
            self.radial = radial
        else:
            print(f"None")
 
    def setRadial(self, radial):
        if (radial > 0):
            self.radial = radial
        else:
            print(f"None")
 
    def getRadial(self):
        return self.radial
 
    def calculateArea(self):
        are = math.pi * self.radial ** 2
        return are

  

posted @   ®Geovin Du Dream Park™  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2010-07-02 SQL server查询数据类型为ntext是空或NULL值
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示