- QNAP hálózati adattárolók (NAS)
- Frissítve! A földön ragadtak a repülők, mert leállt a Microsoft felhője
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Aggasztó dolgot tapasztal a Tesla Kaliforniában
- Hálózati / IP kamera
- SkyShowtime
- DIGI kábel TV
- Windows 10
- Musk felháborodott, elköltözteti a SpaceX-et és az X-et
- Windows 11
Új hozzászólás Aktív témák
-
cousin333
addikt
A namedtuple egy "gyártó függvény" (factory function), aminek az eredménye ebben az esetben egy osztály lesz (mintha mondjuk nem kellene megírnod a Kör osztályt előre, hanem futás közben dinamikusan hoznád létre). Az i2c_io_pinout tehát lényegében egy osztály (amit talán elegánsabb lenne ennek megfelelően camel-case-el jelölni: pl. I2cIoPinout), az i2c_io_state meg valóban egy példány.
Az adott számú "kulcsnevet" vagy az eredeti elnevezés tömbbel éred el, vagy a _fields paraméterrel. Pl.:
i2c_io_state._fields[1]
Őszintén szólva nem tudom, mire kell, de nekem az a véleményem, hogy ha ezt akarod elérni, akkor nem jól használod a típust, hiszen ez pont arra lenne jó, hogy ne kelljen ismerni a sorrendet a létrehozást követően.
Alapvetően én az egész külső IC-nek egy osztályt hoznék létre, hasonlóan a már létező I2C, SPI... stb. osztályokhoz, ami aztán minden létező funkciót egy névtérbe "csomagol". Valami ilyesmi struktúrával:
class IoModule(object):
MASK_SWITCH1 = 0x30
def __init__(self, interface):
self.port = interface
self.portA_status = None
self.portB_status = None
def connect(self):
.... # connect here
def close(self):
self.port.close()
def update_ports(self):
self.portA_status = self.port.read(<reg_portA>)
self.portB_status = self.port.read(<reg_portB>)
def compare_portA(self):
port_old = self.portA_status
self.update_ports()
port = self.portA_status
return port & port_old
@property
def id(self):
return self.port.read(<id_reg>)
@property
def Switch1(self):
return True if self.port_status & self.MASK_SWITCH else False
Ebben az esetben az osztályunk példányosításkor megkapja az interfészt (ami ebben az esetben egy I2C objektum), és azt használja a továbbiakban. A fenti kód elég kezdetleges, csak a struktúrát akartam megmutatni.
ui: ha listaelemeken akarsz végigmenni, akkor ne használd a range(len(x)) formulát. Ha az elem kell, akkor
for elem in lista:
print(elem)
Ha kell a sorszám is, akkor enumerate:
for i, elem in enumerate(lista):
print('Az', i, 'elem a(z)', elem)
Ha pedig több egyforma listád van, akkor zip:
for elemA, elemB in zip(listaA, listaB):
print('Az A eleme:', elemA, 'a B eleme pedig:', elemB)
[ Szerkesztve ]
"We spared no expense"
Új hozzászólás Aktív témák
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- QNAP hálózati adattárolók (NAS)
- Frissítve! A földön ragadtak a repülők, mert leállt a Microsoft felhője
- E-roller topik
- Politika
- Garancia kérdés, fogyasztóvédelem
- Rapid trigger a gyakorlatban: legális csalás a játékokban?
- Vodafone otthoni szolgáltatások (TV, internet, telefon)
- Aggasztó dolgot tapasztal a Tesla Kaliforniában
- Autós topik
- További aktív témák...
- EVGA RTX 3080 10GB GDDR6X XC3 ULTRA GAMING Eladó! 149.000.-
- ZBook Fury 15 G7 15.6" FHD IPS i9-10885H RTX 4000 32GB 512GB NVMe ujjlolv IR kam gar
- GIGABYTE RTX 3070 8GB GDDR6 VISION OC Eladó! 118.000.-
- INNO3D RTX 3070 8GB GDDR6 ICHILL X3 Eladó! 106.000.-
- INNO3D RTX 3070 8GB GDDR6 ICHILL X4 Eladó! 108.000.-
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen